AngularjsにおけるController間の通信機構の解析例

高洛峰
リリース: 2016-12-07 14:29:12
オリジナル
992 人が閲覧しました

この記事の例では、Angularjs のコントローラー間の通信メカニズムについて説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

Angularjs 開発のいくつかの経験の要約では、大きすぎる全能のゴッド コントローラーを避けるために、ビジネスに応じて Angular コントローラーを区別する必要があると述べられていました。ですが、場合によってはコントローラー内で通信​​する必要があります。これは通常、比較的単純な通信メカニズムです。気になる点が変更されたことをコンパニオン コントローラーに伝えます。あなたが JavaScript プログラマーであれば、非同期コールバックのリアクティブ通信、つまりイベント メカニズム (またはメッセージ メカニズム) を自然に考えるでしょう。はい、これはコントローラー間の通信を解決するための angularjs のメカニズムです。つまり、これが angular の唯一の方法です。

Angularjs はスコープ内でバブリングとトンネリングのメカニズムを提供します。$broadcast はイベントをすべての子コントローラーにブロードキャストし、$on はイベントをバブリングして親コントローラーに渡します。これらを使用すると、angularjs の方法で angularjs コントローラー間の通信をすばやく解決できます。 コードは次のとおりです。

View:

<div ng-app="app" ng-controller="parentCtr">
  <div ng-controller="childCtr1">name :
    <input ng-model="name" type="text" ng-change="change(name);" />
  </div>
  <div ng-controller="childCtr2">Ctr1 name:
    <input ng-model="ctr1Name" />
  </div>
</div>
ログイン後にコピー

Controller:

angular.module("app", []).controller("parentCtr",
function ($scope) {
  $scope.$on("Ctr1NameChange",
  function (event, msg) {
    console.log("parent", msg);
    $scope.$broadcast("Ctr1NameChangeFromParrent", msg);
  });
}).controller("childCtr1", function ($scope) {
  $scope.change = function (name) {
    console.log("childCtr1", name);
    $scope.$emit("Ctr1NameChange", name);
  };
}).controller("childCtr2", function ($scope) {
  $scope.$on("Ctr1NameChangeFromParrent",
  function (event, msg) {
    console.log("childCtr2", msg);
    $scope.ctr1Name = msg;
  });
});
ログイン後にコピー

名前の変更は次のようになります。親コントローラにバブルされ、親コントローラはイベントをラップしてすべての子コントローラにブロードキャストします。一方、childCtr2 は変更イベントを登録して自身を変更します。親コントローラーはブロードキャスト時にイベント名を変更する必要があることに注意してください。

jsfiddle リンク: http://jsfiddle.net/whitewolf/5JBA7/15/

この記事が AngularJS プログラミングのすべての人に役立つことを願っています。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!