过滤AngularJS中一个键的多个值

过滤AngularJS中一个键的多个值,angularjs,angularjs-directive,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Ng Repeat,我有产品阵列。我想筛选类型键。我只想同时展示蔬菜和水果。 如何在AngularJS中设置单键和多值过滤器 <div ng-controller="MyCtrl"> <ul> <li ng-repeat="item in products | filter:({type:'vegetable'}||{type:'fruit'})">{{item.name}}</li> </ul>

我有产品阵列。我想筛选类型键。我只想同时展示蔬菜和水果。 如何在AngularJS中设置单键和多值过滤器

<div ng-controller="MyCtrl">
        <ul>
            <li ng-repeat="item in products | filter:({type:'vegetable'}||{type:'fruit'})">{{item.name}}</li>
        </ul>
    </div>

    var myApp = angular.module('myApp', []);

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

  • {{item.name}
var myApp=angular.module('myApp',[]); 函数MyCtrl($scope){ $scope.products=[ {名称:“苹果”,类型:“水果”}, {名称:“葡萄”,类型:“水果”}, {名称:“Orage”,类型:“水果”}, {名称:“胡萝卜”,类型:“蔬菜”}, {名称:“牛奶”,类型:“牛奶”} ] }
最简单的解决方案是在控制器中添加一个过滤器并使用它:

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

  • {{item.name}

谢谢@wayne Ellery,但我们能在不创建自定义过滤器的情况下做到这一点吗?我的理解是否定的。有很多问题的答案是相同的,例如:
<div ng-controller="MyCtrl">
    <ul>
        <li ng-repeat="item in products | filter: filterFruitsAndVegies">{{item.name}}</li>
    </ul>
</div>