我有一个带cutsom过滤器的ng repeat,可以根据任务的完整状态和用户的当前设置来包括/排除任务。我工作得很好,直到ng模型的更改导致任务不再是过滤器的一部分时,它才触发ng单击事件。
在下面的特定情况下,用户设置不显示已完成的任务。复选框完成后,task.complete将变为true,从而将其从过滤器中删除(到目前为止还可以),但单击时的toggleCompleteTask(user,task)
不会激发(这将更新数据库中的任务)。如果我首先更改用户设置以显示已完成和未完成的任务,那么一切都很好,所以通过将其从过滤器中删除,可以以某种方式停止ng点击。
如何从过滤器中删除并激发ng-click事件?
这是我的重复:
<li ng-repeat="task in display_group.tasks | showHiddenAndCompleted:user" mahi-task></li>
还有我的自定义过滤器:
angular.module('mahiFilters', []).filter 'showHiddenAndCompleted', ->
(tasks, user) ->
items =
out: []
if tasks
items.out.push.apply(items.out, tasks.filter (t) -> return t.complete if user.show_completed)
items.out.push.apply(items.out, tasks.filter (t) -> return !t.complete if user.show_uncompleted)
if !user.show_hidden #loop through all tasks and add remove those that are hidden by user items.out array
i = items.out.length - 1
while i >= 0
if items.out[i].hidden_by_user == true
items.out.splice i, 1
i--
items.out #retun the items.out
输入复选框:
<input ng-click="toggleCompleteTask(user,task)" type="checkbox" ng-model="task.complete">
尝试ng更改而不是ng单击:
<input ng-change="toggleCompleteTask(user,task)" type="checkbox" ng-model="task.complete">