2016-04-21 7 views
0

Ich habe einen ng-repeat mit einem cutsom filter um ein- und ausschluss von Aufgaben basierend auf ihrem kompletten Status und den aktuellen Einstellungen des Benutzers durchzuführen. Ich arbeite gut, bis die Änderung des ng-Modells dazu führt, dass die Aufgabe nicht mehr Teil des Filters ist, wird das ng-click-Ereignis nicht ausgelöst.AngularJS dynamischer Filter ng-repeat nicht feuern ng-click

In dem unten beschriebenen spezifischen Fall zeigen die Benutzereinstellungen keine abgeschlossenen Aufgaben an. Wenn das Kontrollkästchen abgeschlossen ist, ändert sich task.complete auf true, was dazu führt, dass es aus dem Filter entfernt wird (bis jetzt), aber toggleCompleteTask(user,task) auf dem ng-click wird NICHT ausgelöst (dies aktualisiert die Aufgaben in einem DB). Wenn ich zuerst die Benutzereinstellung so ändere, dass sowohl vollständige als auch nicht abgeschlossene Aufgaben angezeigt werden, funktioniert alles einwandfrei. Wenn Sie das Filter also aus dem Filter entfernen, wird der ng-Klick gestoppt.

Wie kann ich das Filter entfernen und das ng-click-Ereignis auslösen?

Hier ist meine Wiederholung:

<li ng-repeat="task in display_group.tasks | showHiddenAndCompleted:user" mahi-task></li> 

Und meine benutzerdefinierten Filter:

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 

Und das Eingangskontrollkästchen:

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

Antwort

1

Try ng Wechsel statt ng-Klick :

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

Danke! nicht sicher, warum das funktioniert, aber es tut! –

Verwandte Themen