我想在角度中使用 filter
并希望过滤多个值,如果它具有其中一个值,则应显示它 .
我有这样的结构:
一个对象 movie
,其属性为 genres
,我想过滤 Action
和 Comedy
.
我知道我可以做 filter:({genres: 'Action'} || {genres: 'Comedy'})
,但如果我想动态过滤该怎么办 . 例如 . filter: variableX
我如何在 $scope
中设置 variableX
,当我有一个类型的数组我必须过滤?
我可以把它构造成一个字符串,然后做 eval()
但我不想使用eval()...
19 回答
在这里创建自定义过滤器可能有点过分,如果您有多个值,则可以传入自定义比较器:
然后在过滤器中:
Angular Or Filter Module
$filter('orFilter')([{..}, {..} ...], {arg1, arg2, ...}, false)
这是链接:https://github.com/webyonet/angular-or-filter
我只想创建一个自定义过滤器 . 他们并不那么难 .
模板:
Edit 这里是链接:Creating Angular Filters
更新:这是一个fiddle,它有我的建议的精确演示 .
您可以使用控制器功能进行过滤 .
HTML:
这是自定义过滤器的实现,它将使用值数组过滤数据 . 它将支持具有数组和单个键值的多个键对象 . 如上所述inangularJS API AngularJS filter Doc支持具有单个值的多个键过滤器,但是下面的自定义过滤器将支持与angularJS相同的功能,并且还支持值数组以及数组和单个键组合的组合 . 请在下面找到代码片段,
Usage:
这是一个小提琴示例,实现了上面的 "filterMutiple" 自定义过滤器 . :::Fiddle Example:::
如果你想过滤对象阵列,你可以给
filter:({genres: 'Action', key :value }.
个别属性将通过为该属性指定的特定过滤器进行过滤 .
但是如果您想要通过单个属性过滤并对所有属性进行全局过滤,那么您可以执行类似这样的操作 .
其中"filterObject"是用于搜索单个属性的对象,"Search"将在全局搜索每个属性 .
〜阿图尔
我've spent some time on it and thanks to @chrismarx, I saw that angular'的默认值
filterFilter
允许您传递自己的比较器 . 这是多个值的编辑比较器:如果我们想为DRY制作自定义过滤器:
然后我们可以在任何我们想要的地方使用它:
最后这是一个plunkr .
注意:预期数组应该只包含简单对象,如 String , Number 等 .
你可以使用angular.filter的searchField过滤器
JS:
HTML:
如果情况允许,您也可以使用
ngIf
:我发现最快的解决方案是使用angular-filter中的
filterBy
过滤器,例如:好处是angular-filter是一个相当受欢迎的库(GitHub上大约2.6k星),它仍然在积极开发和维护,因此将它作为依赖项添加到项目中应该没问题 .
我相信这就是你要找的东西:
请试试这个
让我们假设您有两个数组,一个用于电影,一个用于流派
只需使用过滤器:
filter:{genres: genres.type}
这里类型和类型的流派具有流派的 Value
我写了这个字符串和功能(我知道这不是问题,但我搜索它并到达这里),也许它可以扩展 .
用法:
我有类似的情况 . 编写自定义过滤器对我有用 . 希望这可以帮助!
JS:
HTML:
这是我的示例如何为表jsfiddle创建过滤器和指令
指令获取列表(数据)并使用过滤器创建表
我很高兴,如果我帮助你
参加聚会太晚了,但也许可以帮助某人:
我们可以分两步完成,首先按第一个属性过滤,然后通过第二个过滤器连接:
See the working fiddle with multiple property filter
我的解决方案
最好的答案是: