2014-02-12 2 views
11

Мне нужно иметь возможность фильтровать два разных значения одного поля объекта. Возьмем следующий пример.Фильтр AngularJS по нескольким значениям одного поля

$scope.products = [ 
    {name:"Apple",type:"fruit"}, 
    {name:"Grape",type:"fruit"}, 
    {name:"Orage",type:"fruit"}, 
    {name:"Carrot",type:"vegetable"}, 
    {name:"Milk",type:"dairy"} 
] 

С фильтром ng-repeat="item in products | filter:{type:'fruit'}". Я могу получить все фрукты. Но что, если я хочу получить все фрукты и овощи. Я попробовал

ng-repeat="item in products | filter:{type:['fruit','vegetable']}" 

Но это не сработало. Я полагаю, что это должно быть простым решением, но я не мог его найти.

JSFiddle Example

ответ

22

Используйте фильтр функции вместо:

$scope.fruitOrVeg = function(product){ 
    return product.type == 'fruit' || product.type == 'vegetable'; 
}; 

<li ng-repeat="item in products | filter:fruitOrVeg">{{item.name}}</li> 

Fiddle

0
<!-- you can also use a function this simpler way--> 

<div ng-repeat="product in products | filter: myFilter"> 

$scope.myFilter = function (item) { 
    return product.type == 'fruit' || product.type == 'vegetable'; 
}; 
Смежные вопросы