Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS filter on multiple values of one field

I need to be able to filter on two different values of one field of an object. Take the following example.

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

With the filter ng-repeat="item in products | filter:{type:'fruit'}". I can get all of the fruits. But what if I want to get all of the fruits and vegetables. I tried

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

But that didn't work. I figure there should be a simple solution to this, but I couldn't find it.

JSFiddle Example

like image 735
Danny Avatar asked Feb 12 '14 18:02

Danny


1 Answers

Use a filter function instead:

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

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

Fiddle

like image 144
Gruff Bunny Avatar answered Sep 17 '22 15:09

Gruff Bunny