我有一個ng-repeat創建多個指令,每個指令都有一個隔離範圍。我希望能夠調用每個指令調用函數的單個函數,以便在每個隔離範圍上重置一個變量。無論如何我無法做到這一點?我意識到這可能不是最佳做法,但我現在只需要一個解決方案。更新多個指令的隔離範圍
0
A
回答
0
一種方法是提供回調指令(即scope: { xxx: '&' }
),它將執行一些功能。可能是:
<the-directive callback="ctrl.command(action, argument)" />
而且該指令的樣子:
app.directive('theDirective', function() {
return {
...
scope: {
callback: '&',
...
},
controller: ['$scope', function($scope) {
this.resetTheVariable = function() {
// DO WHAT YOU WANT HERE
};
$scope.callback({ action: 'register', argument: this });
$scope.$on('$destroy', function() {
scope.callback({ action: 'deregister', argument: this });
});
}]
};
})
現在控制器調用該指令將如下所示:
function TheController() {
var registeredDirectives = [];
this.command = function(action, argument) {
switch(action) {
case 'register':
registeredDirectives.push(argument);
break;
case 'deregister':
var index = registeredDirectives.indexOf(argument);
if(index >= 0) {
registeredDirectives.splice(index, 1);
}
break;
}
};
this.resetAll = function() {
registeredDirectives.forEach(function(registeredDirectiveController) {
registeredDirectiveController.resetTheVariable();
});
};
}
1
,我在一個類似的靜脈使用另一種方法是angulars事件系統。
我正在創建一個小部件的儀表板。我的小部件是一個包含在ng-repeat
中的指令。
我在我的控制器中發出事件$scope.$broadcast
然後在我的指令中聽取$scope.$on
。我使用ng-repeat
的$index
能夠定位特定的小部件。
簡單的例子小提琴:http://jsfiddle.net/adyjm9g4/
編輯:忘了提,你也可以傳遞數據:http://jsfiddle.net/adyjm9g4/1/
+0
不錯的優雅的解決方案,謝謝! :) – colouredFunk
相關問題
- 1. AngularJS隔離範圍指令
- 2. AngularJS:指令隔離範圍
- 3. 角,指令隔離範圍
- 4. 隔離範圍指令:angularjs
- 5. 指令中的角度隔離範圍指的是父範圍
- 6. 訪問多個指令的隔離範圍
- 7. 請求隔離範圍的多個指令[x,y]
- 8. AngularJS分頁指令W /隔離範圍
- 9. angular.js指令與隔離範圍
- 10. 隔離範圍指令,並在AngularJS
- 11. Angularjs指令:隔離範圍和ATTRS
- 12. AngularJS指令和隔離範圍
- 13. Angularjs TreeView指令與隔離範圍
- 14. AngularJS指令隔離範圍行爲
- 15. AngularJS覆蓋隔離指令範圍
- 16. 角度指令反向隔離範圍
- 17. Angular指令 - 當另一個指令也是隔離範圍時更新父範圍
- 18. 「控制器爲」與隔離範圍內的指令不隔離
- 19. 如何編寫指令來更改另一個指令的隔離範圍值
- 20. 隔離從指令到指令的範圍通信?
- 21. 隔離範圍「=」在指令中影響父範圍
- 22. AngularJS自定義指令 - 將隔離範圍映射到新的子範圍
- 23. 定義隔離範圍時的指令行爲更改
- 24. angularjs嵌套指令範圍隔離隱藏父指令對象
- 25. 隔離範圍:值不更新
- 26. 如何僅隔離我的指令範圍中的單個值?
- 27. 溝通具有隔離範圍的兩個相同的指令
- 28. 隔離範圍2路綁定不更新父範圍的值
- 29. 如何使用角度指令獲取隔離範圍的更新值?
- 30. 角指令:分離範圍
發佈您的代碼,並告訴我們你已經嘗試什麼都。 –