我有一个使用angular的搜索框:
<input type="text"
typeahead="item.name for item in list |
filter: $viewValue:comparator | orderBy: '+name'"/>
我想添加另一个过滤器以从另一个数组中排除某些项目。 类似的东西:
... | exclude: items in excludedList
我不想使用ng-hide
;我特意寻找一个过滤器来做到这一点。
答案 0 :(得分:1)
这看起来像是自定义过滤器的作业:
.filter('excludeItemsByName', function () {
return function (items, excludedList) {
var ret = [];
angular.forEach(items, function (item) {
if (excludedList.indexOf(item.name) === -1) {
ret.push(item);
}
});
// or you could use Array.prototype.filter() in browsers that support it
return ret;
};
})
然后
<input type="text"
typeahead="item.name for item in list |
filter: $viewValue:comparator | excludeItemsByName:['excludeThis','excludeThat'] orderBy: '+name'"/>
(这假设excludedList将是一个平面的字符串列表;它应该足够清楚如何扩展它以支持排除的对象......)
https://docs.angularjs.org/guide/filter#creating-custom-filters