Also, wenn ich ein Array haben:Ist es möglich angular.js durch Eindämmung in einem anderen Array zu filtern?
$scope.letters =
[{"id":"a"},
{"id":"b"},
{"id":"c"}];
Und ein weiteres Array
$scope.filterBy = ["b","c","d"];
Und ich möchte einige ng-repeat filtern scope.letters nur Artikel $ haben, die in $ filterBy erscheinen.
Ich möchte etwas auf die Wirkung der Lage sein, zu tun:
<span ng-repeat="{{letter in letters|filter: letter.id in filterBy }} > {{letter.id}} </span>
Und es haben drucken b, c
Ich weiß, dass dies ein wirklich dummes Beispiel, aber ist es eine Möglichkeit, einen angular.js-Ausdruck basierend auf dem Inhalt eines anderen Array-Objekts filtern?
filteredLetters() wird _every_ digest cycle aufgerufen. Also, wenn Sie in Eingabefeld mit ng-Modell in Ihrer Ansicht haben, bedeutet dies jeden Tastendruck. Es wäre besser, die Ergebnisse des Filters auf einer neuen $ scope-Eigenschaft zu speichern. Verwenden Sie $ watch() es, um die Filterergebnisse zu aktualisieren, wenn sich 'letters' oder' filterBy' ändern. –
Guter Punkt. Danke für den Rat. – ValeriiVasin
Während es funktioniert (vorausgesetzt, Ihre App ist sehr einfach) würde ich nicht empfehlen, diesen Ansatz zu verwenden - wie @MarkRajcok erwähnt, es heißt jeder Digest-Zyklus bedeutet Leistung ist schrecklich und ich bekam Fehler von eckigen ähnlich wie "Error: [$ rootScope: infdig] 10 $ digest() Iterationen erreicht. Abbrechen! " –