我直接跳到案子上。
基本上,当您具有这样的对象数组时:
{id: 1, name: "Hello", location: "New york", streetNumber: 50}
然后,您有一个输入字段:
<input type="text" ng-model="search.$" />
和下表:
<table>
<thead>
<th>Name</th>
<th>Location</th>
<th>Street number</th>
</thead>
<tr ng-repeat="item in items | filter:search">
<td>
{{item.name}}
</td>
<td>
{{item.location}}
</td>
<td>
{{item.streetNumber}}
</td>
</tr>
</table>
因此,当您在搜索字段中键入:“ 1”。
然后,您还将获得id
匹配项为1.的对象。
我的问题是如何排除未显示的项目?
好吧,看看文档
可以使用特殊的属性名称(默认情况下为$)(例如,在{$:“ text”}中)接受对象的任何属性或其嵌套对象属性的匹配。
这就是为什么包含id满足条件的结果的原因。
添加其他过滤
<tr ng-repeat="item in items | filter : search | filter : { id: '!search.$' }">
考虑编写自己的过滤器,例如
JS
app.filter('searchFields', function () {
return function (array, fields, string) {
fields = fields.split(',');
var i,
fieldsLength = fields.length;
return array.filter(function (item) {
for (i = 0; i < fieldsLength; i++) {
if (typeof item[fields[i]] === 'undefined') {
continue;
}
return (item[fields[i]] + '').indexOf(string) !== -1;
}
});
};
});
的HTML
<tr ng-repeat="item in items | searchFields : 'name,location,streetNumber' : search.$">
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句