Angularjs 和对象上的$filter
我有一个具有不同属性的对象,我想知道如何在多个过滤器上过滤它们,而不创建新的自定义过滤器,例如,我有一个包含城市和语言的People对象,实际上我只能按城市或语言对它们进行排序,但不能同时按以下行进行排序:Angularjs 和对象上的$filter,angularjs,filter,Angularjs,Filter,我有一个具有不同属性的对象,我想知道如何在多个过滤器上过滤它们,而不创建新的自定义过滤器,例如,我有一个包含城市和语言的People对象,实际上我只能按城市或语言对它们进行排序,但不能同时按以下行进行排序: <md-input-container> <label> Search for user... </label> <input ng-model="searchTerm" type="search" class="
<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>
如何避免创建新的cutom筛选器?若要通过多个对象属性创建筛选器,可以使用筛选器框架筛选器
在HTML模板绑定中{{filter_expression}filter:expression:comparator:anyPropertyKey}。其中表达式可以是字符串、对象或函数
根据
对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:M,phone:1}谓词将返回一个项目数组,这些项目的属性名称包含M,属性phone包含1。默认情况下,可以使用特殊的属性名$,例如{$:text},以接受与对象的任何属性或其嵌套对象属性的匹配
要按城市和语言属性创建过滤器,只需使用:
<md-option
ng-value="user"
ng-repeat="user in users | filter: {City:searchTerm, Language: searchTerm }">
{{user.city}} {{user.language}}
</md-option>
您还可以使用函数参数来解决您的问题
functionvalue、index、array:谓词函数可用于编写任意筛选器。将为数组的每个元素调用该函数,并将元素、其索引和整个数组本身作为参数
最后的结果是谓词为其返回true的那些元素的数组
只需编写一个函数,根据您的搜索词过滤值的位置您能澄清您的问题吗?你想干什么?通过多个对象属性创建筛选器而不创建自定义筛选器?如果我的问题不清楚,很抱歉。我想创建一个过滤器,例如,如果我写巴黎英语,它将显示每个离开巴黎说英语的用户感谢你的回答,我刚刚用过滤器尝试了你的解决方案:{City:searchTerm,Language:searchTerm}但是,例如,如果我键入Paris,那么该过滤器将不返回任何内容,因为它搜索的模型使用Paris作为预期的城市,但使用Paris作为语言,因此它不会返回任何内容…@TotoNaBendo实际上要完全符合您的要求,您需要每个属性使用不同的搜索词,或者您应该编写我提到的自定义函数。实现所有需求并返回所有记录布尔值是否匹配