Angular ng-checked如果项目在列表中

时间:2014-08-14 13:41:33

标签: angularjs angularjs-directive

我有两个项目列表: 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并尽可能在数组上放置一个属性。

1 个答案:

答案 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()" />

我认为你的指令中的函数声明是你的问题的关键