Angular:从数组中过滤多个项目

时间:2015-08-26 13:21:39

标签: angularjs angularjs-filter

我正在创建一个应用程序,您可以通过单击类别按钮来过滤项目。大多数商品都有多个类别。当按下类别按钮时,我创建了一个包含按下的类别的数组。

每个要过滤的项目都有一个它所属类别的数组。 例如:

项目1 - 类别:动物,棕色,尾巴

第2项 - 类别:动物,白色

第3项 - 类别:人类,高大

当我按下类别按钮" animal"时,它只显示项目1和2,然后当我按下棕色时,它仅显示项目1.当我取消选择所有项目并按此顺序时 - 动物,尾巴。它没有显示任何内容:/

我已经看过一些类似的主题,但是没有找到一个可行的方法。

是否可以在不创建自定义过滤器的情况下完成?

1 个答案:

答案 0 :(得分:1)

如果您改变主意添加“自定义过滤器”,这里应该有效。

<LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="35"
        android:orientation="horizontal"
        android:gravity="center"
        android:weightSum="100">

这将像任何angular.module('myApp').filter('matchesAll', function() { return function(items, relevant, property) { if(!(relevant && relevant.length)){ return items; // No categories to compare with, return everything } property = property || 'categories'; // By default look at categories return items.filter(function(item) { var itemProps = item[property]; return relevant.every(function(relevantCategory){ return itemProps.indexOf(relevantCategory) !== -1; }); }); }; }); 过滤器一样使用:

ngRepeat

JSFiddle演示它:http://jsfiddle.net/3an5wr0b/