2013-09-05 5 views
8

ディレクティブインスタンスは2つあります。 2つのインスタンス間で通信する方法はありますか? また、すべてのインスタンスが同じ値を共有するグローバル変数を設定できますか?ディレクティブインスタンス間の通信に最適な方法

サービスに値を格納しようとしました。あるインスタンスの値が変更されると、他のインスタンスが手動で更新されます。しかし、これが最良の方法であるかどうかはわかりません。

ありがとうございました。

+0

? http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$broadcast –

答えて

11

ディレクティブ・ファクトリ自体はシングルトンです。定義オブジェクトの外で宣言したものは、すべてのインスタンスに対してグローバルになります。各インスタンスには独自のスコープがあるため、インスタンス固有のデータがスコープに入れられます。したがって、このような何か:どのように `$のbroadcast`について

angular.module("myApp", []) 

.directive("myDir", function() { 
    var myGlobal = 0; 

    return { 
     template: '<div>Global: {{getGlobal()}}, Local: {{local}} -- <a href="" ng-click="increment()">Increment</a></div>', 
     scope: {}, 
     link: function(scope, element, attrs) { 
      scope.local = 0; 
      scope.increment = function() { 
       scope.local++; 
       myGlobal++; 
      } 
      scope.getGlobal = function() { 
       return myGlobal; 
      } 
     } 
    } 
}); 

http://jsfiddle.net/7YwDS/

関連する問題