Подтвердить что ты не робот

Фильтр 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

4b9b3361

Ответ 1

Вместо этого используйте функцию фильтра:

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

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

Fiddle

Ответ 2

<!-- 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';
};