我有两个项目列表: all_todos my_todos
如果我的待办事项在应用程序的其他任何位置更新,我想创建一个更新待办事项复选框的指令。
<tr ng-repeat="todo in all_todos">
<td>
<input type="checkbox" ng-checked="_.findIndex(my_todos, function(t){return t.id == todo.id;}) > -1"/>
</td>
<td>
{{todo.title}}
</td>
</tr>
Angular不喜欢ng-checked中的起始花括号。我想避免编写$ scope.watch并尽可能在数组上放置一个属性。
答案 0 :(得分:4)
尝试在控制器中创建一个函数,该函数获取实际ng-checked指令的内容,并在ng-checked中调用它。
你应该有类似的东西
// your controller
angular.module('..').
controller('..', function() {
$scope.test = function() {
return _.findIndex(my_todos, function(t){return t.id == todo.id;}) > -1;
}
})
并在你的HTML中
<.... ng-checked="test()" />
我认为你的指令中的函数声明是你的问题的关键