2013-09-05 45 views
8

我有兩個指令實例。這兩個實例之間有交流的方式嗎? 或者我可以設置一個全局變量,所有實例將共享相同的值。指令實例之間通信的最佳方式

我嘗試將值存儲在服務中。當一個實例中的值發生更改時,則會手動更新其他實例。但我不確定這是否是最好的方法。

謝謝。

+0

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

回答

11

指令工廠本身是一個單身人士。您在定義對象之外聲明的任何內容對所有實例都是全局的。由於每個實例都有自己的作用域,因此實例特定的數據應該放在作用域中。所以,這樣的事情:

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/

相關問題