【发布时间】:2016-01-17 20:11:34
【问题描述】:
假设我有 2 个指令:“父”(即表)和“子”(tr),我希望能够选择子元素并将它们的列表保留在我的父指令中(我认为控制器是唯一可能的地方,不是吗?)。 我正在处理单击事件以更新存储在我的控制器中的列表,它工作正常,但我也想为选定的项目保留“选定”类,但因为选择也可能由父指令的控制器更改(和在控制器中修改 DOM 是“禁止的”),我能想到的唯一可能性是我的子指令中的观察者。
请看示例:
angular.module('App')
.directive('parent', function () {
return {
scope : {},
controller: function($scope) {
this.selectedItems = [];
}
}
}).directive('child', function() {
return {
require: '^parent',
link: function(scope, element, attrs, controller) {
scope.$watchCollection('controller.selectedItems', function() {
//add or remove 'selected' class here.
}
}
}
});
这不起作用(观察者事件仅在数组引用发生变化而不是单个元素时触发)并且它似乎也没有正确设计,您能否为我提供一个更好的方法来解决这个问题?
更新:
注意 controller.selectedItems 在控制器中被修改,但是子指令似乎没有看到任何变化。
【问题讨论】:
-
根据您的反馈添加了修复解决方案。
标签: javascript angularjs