2014-10-28 10 views
5

Mam następujący filtrem angularjs:angularjs: Użyj array (wiele wartości) dla filtra

<div ng-repeat="node in data | filter:{parentID:12}"></div> 

Działa to dobrze (mam tylko dane, gdzie parentId jest 12).

W następnym kroku, chcę, aby wszystkie dane, gdzie parentId jest (na przykład) 12,13,25 lub 30.

Próbowałem następujący (jej nie działa):

filter:{parentID:[12,13,25,30]} 

Czy istnieje sposób na zbudowanie filtra zgodnie z opisem?

Dziękuję bardzo!

+0

możliwe duplikat [Jak filtrować wiele wartości (lub operacji) w angularjs] (http: //stackoverflow.com/questions/15868248/how-to-filter-multiple-values-or-operation-in-angularjs) –

Odpowiedz

6

Funkcja predykatu doskonale pasuje do Twoich potrzeb! Od doc:

function(value, index): A predicate function can be used to write arbitrary 
filters. The function is called for each element of array. The final result 
is an array of those elements that the predicate returned true for. 

Na przykład:

<div ng-repeat="node in data | filter:checkParentID"></div> 

A w kontrolerze

$scope.checkParentID = function(value, index) { 
    return value.parentID && [12,13,25,30].indexOf(value.parentID) !== -1; 
} 
+0

@Tream Oops, wszystko pomyliłem. Filtr powinien wyglądać jak filtr: parentFilter. Proszę przyjąć odpowiedź morlocha, ponieważ jest poprawna, a moja nie. – dfsq

+0

Nie jestem pewien, co zrobiłeś źle - działa dla mnie. Ale w porządku, przyjąłem jego odpowiedź. Dzięki tobie i morloch za pomoc! :) – Tream

+0

Ja trochę pomieszałem. Ta odpowiedź jest lepsza :) Zapraszamy! – dfsq

Powiązane problemy