angular.js - 角度ルーティング用のコントローラー
PHP中文网
PHP中文网 2017-05-15 16:50:44
0
3
839

など、ルーティング中に 2 つのページでコントローラーを共有できますか? リーリー

「はい」の場合、コントローラーは独立スコープですか、それともパブリックですか? たとえば、コントローラーで変数 i を宣言し、ページ a で i の値を変更すると、b にルーティングされます。ページが開かれた場合、i の値はそれに応じて変化しますか?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(3)
伊谢尔伦

私も最近 angularjs を学んでいます。投稿者が言及した問題については、簡単なデモンストレーションを作成できます。

次の HTML 構造、異なるビュー、同じコントローラーがあります

リーリー

コントローラーコードの一部:

リーリー

まず表示ボタンをクリックすると、出力結果は次のようになります:


次に、「3 に変更」ボタンをクリックし、もう一度「表示」ボタンをクリックすると、結果は次のようになります:


この実験から、同じコントローラーではありますが、スコープは実際にはまったく関係のない 2 つのスコープであることがわかります。

スコープ構造もツリー状になっており、上記の HTML 構造には 2 つのスコープがあります。
別の明らかな例を見てみましょう:
リーリー

コンソールを見てください


結果は 2 回出力され、メソッドが 2 回実行されたことを示します。スコープが共有されている場合、重複して実行されることはありません。

要約: コントローラーで変数 i を宣言し、ページ a で i の値を変更しても、ページ b にルーティングしても、i の値は変更されません

お役に立てれば幸いです!

いいねを押す +0
我想大声告诉你

このように使用するのは奇妙です、このように使用できるかどうかわかりません

個人的には、通常の使用法は次のとおりだと思います:
1 ページ、1 コントローラー
コントローラー間で変数とメソッドを共有する必要がある場合は、作成したサービスを挿入するだけで、変数とメソッドを別のコントローラーに保存するサービスを angular で構築できます。

公式ドキュメントには、サービスがコードを共有するために使用されることも明確に記載されています:

サービス
Angular サービスは、依存関係注入 (DI) を使用して相互に接続される置換可能なオブジェクトです。サービスを使用して、アプリ全体でコードを整理および共有できます。
https://docs.angularjs.org/guide/services

いいねを押す +0
伊谢尔伦

ルートを切り替えた後、コントローラーのライフサイクルは終了し、現在の $scope とサブスコープは無効になります。
複数のコントローラー間でデータを共有する必要がある場合は、サービスを使用できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート