人気のあるAngular-Dialog-Serviceや公式のAngular-UI Bootstrap Modalなど、AngularJSアプリケーションでモーダルを実装する方法がいくつかあります。この記事では、別のAngular-UIサービスであるUI-Routerを使用して、Angularでモーダルを処理する方法を共有します。
キーテイクアウト- モーダルはアプリケーションの一意の状態と見なすことができ、状態管理ツールを使用して異なるモーダル状態間でナビゲートすることが論理的になります。
- Angular UIルーターを使用して、AngularJSアプリケーションでStateful Modalsを作成できます。これには、UIルーターのインストール、Angularアプリに追加し、各モーダルの状態を定義することが含まれます。 UIルーターは、状態のテンプレートをロードする場所を決定するために、UIViewという指令を提供します。これは、モーダルを作成および管理するために、親のモーダル状態および子どものモーダル状態と組み合わせて使用されます。 別の状態に移行することは、ステートフルモーダルを閉鎖する可能性があります。 Angular UI Routerは、MODALを閉じるためにイベントリスナーをセットアップするために使用できる状態に入ったりするときに発射する関心とOnexitコールバックを提供します。
- 州としてモーダルを扱うことで、ネストされた状態、コールバック、状態パラメーター、依存関係の注入、URLのルー上の利点などの利点があります。また、アプリケーション内のさまざまなモーダル間のスムーズなナビゲーションも可能です。
- 状態での考え方 このアプローチの背後にある核となるアイデアは、モーダルが実際にアプリケーションのユニークな状態であるということです。 eコマースサイトを検討してください。 「カートに追加」ボタンをクリックすると、モーダルがポップアップ表示されます。ログインを依頼します。詳細を入力し、「続行」をクリックします。
- たまたまモダルになったことがある多くの州を横断しました。モーダルを州と考えると、州の管理ツールを使用して異なるモーダル状態に移動することは理にかなっています。 UIルーターの開始
- 最初から簡単に保ちましょう。まず、UIルーターをインストールし、Angularアプリに追加します。
以下の内容を持つindex.htmlファイルを作成することから始めます。
jQueryは、後でいくつかのDOM作業に含まれています。
Angular自体の最新バージョンを含めることに加えて、Angular UIルーター、CSSファイル(現在空)、そしてもちろんアプリのメインJavaScriptファイルを含めました。次のことを見てみましょう。
2。 Angularアプリを作成
App.jsファイルは、この時点で非常に簡単です。 ModalApp用のモジュールを作成してから、依存関係としてUI.Routerを追加するだけです。
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span>
3。インターフェイスを具体化します
モーダルを開く前に、ユーザーが対話するためのUIが必要です。この例では、index.html:
の「カートボタンに追加」で物事をシンプルに保ちました。angular<span>.module("modalApp", ["ui.router"])</span>
4。初期状態
を構成しますモーダルごとに多くの状態を定義する予定ですが、最初に行う必要があるセットアップが少しあります。さまざまなモーダル間で動作を共有したい可能性が高いため、個々のモーダルが継承できる親のモーダル状態を作成しましょう。次のコードはJS/app.jsに属しています:
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>
「モーダル」と呼ばれる状態を定義しました。これは抽象的な状態であり、直接移行できないことを意味します。それは、共有された機能を提供するために、子供の状態の親としてのみ機能します。また、名前付きビュー(モーダルとも呼ばれる)のテンプレートを定義しました。あなたのビューを命名することは、特にアプリ内の他の状態にUIルーターを使用している場合、アプリの間違った場所に間違った状態にロードするのを避けるための良い考えです。
5。モーダルのUIViewディレクティブを定義して、にロードする
UIルーターは、UIViewという指令を使用して、状態のテンプレートをどこにロードするかを決定します。 index.htmlページにuiviewディレクティブを含めます:
angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span><span>});</span>私たちの見解を「モーダル」と名付けたので、これも指令に渡す必要があります。 autoScroll = "false"設定により、UIルーターがモーダルを表示しようとすることを防ぎます。
6。最初の実際のモーダル
を作成します最初の実際のモーダルを定義しましょう。ユーザーがカートに製品を追加したいと確信しているかどうかをユーザーに尋ねるポップアップを作成します。
それは簡単です。 Routerのドット表記を使用して、新しいConsienDdtoCart状態をModalの子供として定義しました。また、新しいモーダルのテンプレートを指定しました
ConsienAddtoCart ModalはModal Stateの子であるため、UI-Routerは、確認テンプレートをレンダリングするために、Modal Stateのテンプレート(Modal.html)のUIViewディレクティブを探します。これらのテンプレートの両方を次に作成しましょう<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span><div> ui-view<span>="modal"</span> autoscroll<span>="false"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>7。ベースモーダルステートのテンプレート
を作成します
Modal Stateのテンプレートは、アプリと、さまざまなChild Stateのテンプレートをロードする種類のホルダーをカバーするための透明な背景を作成する責任があります。CSS/app.cssに属するいくつかの基本的なスタイルを次に示します
8。 MODALの確認
を確認します
このテンプレートは、確認メッセージが入った実際のモーダルボックス用です。次のコードは、modals/cundile.html:angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span> $stateProvider<span>.state("Modal.confirmAddToCart", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modals/confirm.html" </span> <span>} </span> <span>} </span> <span>}); </span><span>});</span>に掲載されています
モーダルボックスのスタイリング:
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span>
9。すべてを配線してください
これで、子状態を持つ親のモーダル状態があり、両方のテンプレートがあり、実際にモーダルをトリガーするだけのものがあります。 UI-Routerは、アンカータグのHREF属性と同様に動作するUI-SREFという指令を提供します。それは基本的に私たちが提供する国家名に私たちをリンクします。
angular<span>.module("modalApp", ["ui.router"])</span>
ボタンをクリックすると、ルーターがModal.confirmaddtocart状態に移動します。 Modal Stateのテンプレートは、最初にindex.htmlのUI-Viewディレクティブにロードされます。これにより、背景が表示され、所有者が準備されます。次に、白い確認ダイアログは、親モーダルテンプレートとHey PrestoのUI-Viewディレクティブにロードされます!モーダル!
があります10。モーダル
を閉じます最初に気付くかもしれないことは、モーダルを閉じることができないということです。それを修正しましょう。
Angularui Routerは、州に入ったり退職したりするときに発砲するOnetnerおよびOnexitコールバックを提供します。 Onenter Callbackを使用して、モーダルを閉じるイベントリスナーを設定します。しかし、それは質問を頼みます:実際にそれをどのように閉じるのですか?州ベースのモーダルを閉じることは、単に別の状態に移行する問題です。それが状態であるかどうかは、モーダルが原因であるか、それだけのデフォルトから、NO-OP状態があなた次第です。とりあえず、空のデフォルトの状態を作成し、それを使用してモーダル状態から離れてナビゲートしましょう。
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>私たちが設定したイベントはかなり些細なことです。 ESCキーと、背景のクリックを聞くだけでもあります。さらに、e.StopPropagation()コールが追加され、モーダルバブル内のクリックが背景まで、意図せずモーダルを閉じるのを防ぎます。
先に進んでテストしてください。
11。別のモーダル
への移行モーダルを開閉できるようになったので、このアプローチの真の強さを確認し始めることができます。各モーダルを状態で表現することは清潔で意味があるだけでなく、それらのモーダル内で状態を横断することができます。
ユーザーに購入を確認するように依頼し始めました。それでは、別のモーダルで成功メッセージを見せましょう。繰り返しますが、新しい状態とそれに関連するテンプレートを定義します。
さて、残されているのは、確認モーダルから「はい」ボタンを新しい成功状態にリンクすることだけです。私たちがそこにいる間、デフォルトの状態にリンクする「いいえ」ボタンを追加してモーダルを閉じることができます。
angular<span>.module("modalApp", ["ui.router"]).config(function($stateProvider) { </span> $stateProvider<span>.state("Modal", { </span> <span>views:{ </span> <span>"modal": { </span> <span>templateUrl: "modal.html" </span> <span>} </span> <span>}, </span> <span>abstract: true </span> <span>}); </span><span>});</span>そしてそこにあなたはそれを持っています!州ベースのナビゲーションモーダル。モーダルを状態として扱うことは、アプリケーションでモーダルを使用するときにユーザーがスムーズなエクスペリエンスをすることを保証するための確実な火災の方法であると思います。
<span><span> </span><span><span><span> ng-app<span>="modalApp"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><title>></title></span>Modals with Angular and Ui-Router<span><span></span>></span> </span> <span><span><span><link> rel<span>="stylesheet"</span> href<span>="css/app.css"</span> /></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/jquery.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/angular-ui-router.min.js"</span>></span><span><span></span>></span> </span> <span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/app.js"</span>></span><span><span></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span>></span> </span> <span><span><span><h3 id="gt">></h3></span>Pusheen Hoodie<span><span></span>></span> </span> <span><span><span><p>></p></span>Now you too can look like Pusheen!<span><span></span>></span> </span> <span><span><span><button>></button></span>Add to cart<span><span></span>></span> </span> <span><span><span><div> ui-view<span>="modal"</span> autoscroll<span>="false"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span></span>
モーダルは単なる状態であるため、次のような角度UIルーターの他のすべての追加の利点が得られます。
- ネストされた状態 - モーダル内で他の状態をレンダリングできます
- コールバック - モーダルが開設または閉じてアプリケーションの他の部分を通知したときにイベントを発射します
- 状態のパラメーションと依存関係インジェクション - 状態パラメーションまたは依存関係のデータサービスを使用してモーダルにデータを渡す
- urls - 状態はuriルーティング可能です。つまり、モーダルでかなり気の利いた にリンクするURLを持つことができるということです。
Angularの他のバージョンでステートフルなモーダルを使用できますか? Angularの他のバージョンのステートフルモーダル。ただし、ステートフルモーダルを作成するプロセスは、使用しているAngularのバージョンによって異なる場合があります。 AngularJSでステートフルモーダルを作成するときに、最も正確で最新の情報については、最も正確で最新の情報については、常に公式の角度文書を参照してください。 $ stateChangeErrorイベントを使用してエラーを処理できます。このイベントは、状態移行中にエラーが発生すると、ルートスコープで放送されます。このイベントをコントローラーで聞いて、発生したときに適切なアクションを実行できます。 Angularjsで。これは、モーダルの状態を定義するときにPARAMSオプションを使用して実行できます。 PARAMSオプションを使用すると、モーダルが開かれたときにモーダルのコントローラーに渡す必要があるパラメーターを指定できます。 AngularJは、Angularの組み込みテストツールを使用して実行できます。 $ STATEサービスを使用してModalの状態に移行し、Modalのテンプレートが正しくロードされていることを確認できます。 Angularの$コントローラーサービスを使用して、Modalのコントローラーの機能をテストすることもできます。
以上がAngular UIルーターを使用してAngularJSでステートフルモーダルを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
