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">
Danke! nicht sicher, warum das funktioniert, aber es tut! –