我有一个使用ng-repeat
重复的指令。请考虑以下代码:
<my-drctv todos="todos" ng-repeat="todos in todoGroups track by todos[0].id"></my-drctv>
todoGroups
是一个二维数组,包含分组的待办事项。
这是我的指示:
angular.module('myModule').directive('myDrctv', function() {
return {
restrict: 'E',
scope: {
todos: "="
},
replace: true,
templateUrl: '<div>{{firstTodo.description}}</div>',
link: function link(scope, element, attrs, ctrl) {
console.log("myDrctv: link fn");
scope.firstTodo = scope.todos[0];
}
};
});
这列出了我的待办事项(模板已简化)并且到目前为止一直有效。
现在问题:从我的服务器重新获取todoGroups
并在我的控制器中设置为$scope.todoGroups = myService.fetch()
的新值时,我的指令不会更新,因为我的指令的链接功能不是第二次调用。
- 似乎这个问题只发生在服务器返回的列表长度与以前相同的情况下,只有我的待办事项的“内容”发生了变化(但我不确定)
- 出于性能原因,角度是否会重复使用我的指令?我一直认为,它会破坏
ng-repeat
内的每个元素并插入新元素(在我的例子中是指令)- 如何触发对我的指令的
link
功能的第二次调用?