Właściwie istnieje inne (być może lepsze rozwiązanie), w którym można użyć natywnego filtru „filtru” angulara i nadal przekazywać argumenty do własnego filtru.
Rozważ następujący kod:
<div ng-repeat="group in groups">
<li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
<span>{{friend.name}}</span>
<li>
</div>
Aby to zadziałało, po prostu zdefiniuj swój filtr w następujący sposób:
$scope.weDontLike = function(name) {
return function(friend) {
return friend.name != name;
}
}
Jak widać tutaj, weDontLike w rzeczywistości zwraca inną funkcję, która ma twój parametr w swoim zakresie, a także oryginalny element pochodzący z filtra.
Zajęło mi 2 dni, zanim zdałem sobie sprawę, że możesz to zrobić, nigdzie jeszcze nie widziałem tego rozwiązania.
Zamówienie Odwrócona polaryzacja filtrem angularjs aby zobaczyć, jak można to wykorzystać dla innych przydatnych operacji z filtrem.
Z tego, co rozumiem, nie można przekazywać argumentów do funkcji filtrującej (podczas korzystania z filtru „filter”). To, co musiałbyś zrobić, to napisać niestandardowy filtr, coś takiego:
Oto działający jsFiddle: http://jsfiddle.net/pkozlowski_opensource/myr4a/1/
Inną prostą alternatywą, bez pisania niestandardowych filtrów, jest przechowywanie nazwy do odfiltrowania w zakresie, a następnie napisanie:
źródło
Właściwie możesz przekazać parametr ( http://docs.angularjs.org/api/ng.filter:filter ) i nie potrzebujesz do tego niestandardowej funkcji. Jeśli przepiszesz swój HTML jak poniżej, zadziała:
http://jsfiddle.net/ZfGx4/59/
źródło
filter:['Adam', 'john']
Możesz po prostu zrobić to w szablonie
W filtrze
źródło
Rozszerzając odpowiedź pkozlowski.opensource i używając
array's
metody wbudowanego filtru javascript, można by uprzyjemnić rozwiązanie:Oto link jsfiddle .
Więcej o filtrze Array tutaj .
źródło
Możesz przekazać wiele argumentów do filtra kątowego!
Definiowanie mojej aplikacji kątowej i zmiennej poziomu aplikacji -
Twój filtr będzie wyglądał następująco: -
A z HTML wyślesz dane takie jak: -
Tutaj wysyłam obiekt JSON do filtra. Możesz również wysłać dowolne dane, takie jak ciąg lub liczba.
możesz również przekazać dynamiczną liczbę argumentów do filtrowania, w takim przypadku musisz użyć argumentów, aby uzyskać te argumenty.
Aby zobaczyć działające demo, przejdź tutaj - przekazywanie wielu argumentów do filtra kątowego
źródło
Możesz po prostu użyć
| filter:yourFunction:arg
A w js
źródło