8
我有兩個指令實例。這兩個實例之間有交流的方式嗎? 或者我可以設置一個全局變量,所有實例將共享相同的值。指令實例之間通信的最佳方式
我嘗試將值存儲在服務中。當一個實例中的值發生更改時,則會手動更新其他實例。但我不確定這是否是最好的方法。
謝謝。
我有兩個指令實例。這兩個實例之間有交流的方式嗎? 或者我可以設置一個全局變量,所有實例將共享相同的值。指令實例之間通信的最佳方式
我嘗試將值存儲在服務中。當一個實例中的值發生更改時,則會手動更新其他實例。但我不確定這是否是最好的方法。
謝謝。
指令工廠本身是一個單身人士。您在定義對象之外聲明的任何內容對所有實例都是全局的。由於每個實例都有自己的作用域,因此實例特定的數據應該放在作用域中。所以,這樣的事情:
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;
}
}
}
});
如何'$ broadcast'? http://docs.angularjs.org/api/ng.$rootScope.Scope#$broadcast –