AngularJS动态过滤ng-repeat不点燃ng-click

时间:2016-04-21 00:16:03

标签: angularjs angular-ngmodel angularjs-ng-click ng-filter

我有一个带有cutom过滤器的ng-repeat,根据完整状态和用户的当前设置来包含/排除任务。我工作正常,直到ng模型更改导致任务不再是过滤器的一部分,它不会触发ng-click事件。

在下面的特定情况下,用户设置不显示已完成的任务。复选框完成后,task.complete将更改为true,从而导致它从过滤器中删除(到目前为止很好),但ng-click上的toggleCompleteTask(user,task)不会触发(这会更新任务)一个DB)。如果我首先更改用户设置以显示完成和未完成的任务,则一切正常,因此从过滤器中删除它会以某种方式停止ng-click。

如何从过滤器中删除并触发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">

1 个答案:

答案 0 :(得分:1)

尝试更改ng而不是ng-click:

<input ng-change="toggleCompleteTask(user,task)" type="checkbox" ng-model="task.complete">