我有一个具有不同属性的对象,我想知道如何在几个过滤器上过滤它们而不创建新的自定义过滤器,例如,我的“ People”对象包含一个城市和一种语言,实际上我可以对其进行排序他们只能按所在城市或当地语言来显示,而不能同时按以下行显示:
<md-input-container>
<label>
Search for user...
</label>
<input ng-model="searchTerm" type="search" class="demo-header-searchbox md-text" flex>
</md-input-container>
<md-option ng-value="user" ng-repeat="user in users | filter:searchTerm ">
{{user.city}} {{user.language}}
</md-option>
如何避免创建新的皮肤过滤器?
答案 0 :(得分:1)
要通过多个对象属性创建filter
,可以使用filter
框架过滤器。
在HTML模板绑定中 {{filter_expression |过滤器:表达式:比较器:anyPropertyKey}}。
expression
可以是string
,Object
或function
。
对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:“ M”,phone:“ 1”}谓词将返回属性名称为“ M”且属性电话为“ 1”的项的数组。可以使用特殊的属性名称(默认情况下为$)(例如,在{$:“ text”}中)接受对象的任何属性或其嵌套对象属性的匹配。
要通过City
和Language
属性创建过滤器,只需使用:
<md-option
ng-value="user"
ng-repeat="user in users | filter: {City:searchTerm, Language: searchTerm }">
{{user.city}} {{user.language}}
</md-option>
您还可以使用function
参数来解决问题
函数(值,索引,数组):谓词函数可用于编写任意过滤器。对于数组的每个元素都会调用该函数,并将该元素,其索引以及整个数组本身作为参数。
最终结果是谓词为其返回true的那些元素的数组。
只需编写功能,即可根据您的搜索字词过滤值