У меня есть два списка элементов: 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 и размещения свойства в массиве, если это возможно.

2
Dave 14 Авг 2014 в 17:41
Ваши задачи идентичны всем задачам?
 – 
Rob
14 Авг 2014 в 18:06
Некоторые из моих задач могут быть во всех задачах, некоторые - нет.
 – 
Dave
15 Авг 2014 в 04:07

1 ответ

Лучший ответ

Попробуйте создать функцию в вашем контроллере, которая берет содержимое вашей фактической директивы 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()" />

Я думаю, что объявление функции в вашей директиве является ключом к вашей проблеме

4
Polochon 14 Авг 2014 в 18:07