Tatsächlich gibt es eine andere (möglicherweise bessere) Lösung, bei der Sie den nativen Filterfilter des Winkels verwenden und trotzdem Argumente an Ihren benutzerdefinierten Filter übergeben können.
Betrachten Sie den folgenden Code:
<div ng-repeat="group in groups">
<li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
<span>{{friend.name}}</span>
<li>
</div>
Damit dies funktioniert, definieren Sie Ihren Filter einfach wie folgt:
$scope.weDontLike = function(name) {
return function(friend) {
return friend.name != name;
}
}
Wie Sie hier sehen können, gibt weDontLike tatsächlich eine andere Funktion zurück, deren Gültigkeitsbereich Ihren Parameter sowie das ursprüngliche Element aus dem Filter enthält.
Ich habe 2 Tage gebraucht, um zu erkennen, dass Sie dies tun können. Ich habe diese Lösung noch nirgendwo gesehen.
Checkout Verpolung eines Angular.js-Filters umkehren, um zu sehen, wie Sie dies für andere nützliche Operationen mit Filter verwenden können.
Soweit ich weiß, können Sie keine Argumente an eine Filterfunktion übergeben (wenn Sie den Filterfilter verwenden). Was Sie tun müssten, ist einen benutzerdefinierten Filter zu schreiben, etw wie folgt:
Hier ist die funktionierende jsFiddle: http://jsfiddle.net/pkozlowski_opensource/myr4a/1/
Die andere einfache Alternative, ohne benutzerdefinierte Filter zu schreiben, besteht darin, einen Namen zum Herausfiltern in einem Bereich zu speichern und dann zu schreiben:
quelle
Tatsächlich können Sie einen Parameter übergeben ( http://docs.angularjs.org/api/ng.filter:filter ) und benötigen dafür keine benutzerdefinierte Funktion. Wenn Sie Ihren HTML-Code wie folgt umschreiben, funktioniert dies:
http://jsfiddle.net/ZfGx4/59/
quelle
filter:['Adam', 'john']
Sie können dies einfach in Vorlage tun
Im Filter
quelle
Wenn Sie die Antwort von pkozlowski.opensource erweitern und die in Javascript
array's
integrierte Filtermethode verwenden, könnte dies eine hübsche Lösung sein:Hier ist der jsfiddle Link .
Mehr zum Array-Filter hier .
quelle
Sie können mehrere Argumente an den Winkelfilter übergeben!
Definieren meiner eckigen App und einer App-Level-Variablen -
Ihr Filter sieht wie folgt aus: -
Und aus HTML senden Sie Daten wie: -
Hier sende ich ein JSON-Objekt an den Filter. Sie können auch beliebige Daten wie Zeichenfolgen oder Zahlen senden.
Sie können auch eine dynamische Anzahl von Argumenten zum Filtern übergeben. In diesem Fall müssen Sie Argumente verwenden , um diese Argumente abzurufen.
Eine funktionierende Demo finden Sie hier. Übergeben Sie mehrere Argumente an den Winkelfilter
quelle
Sie können einfach verwenden
| filter:yourFunction:arg
Und in js
quelle