gpt4 book ai didi

javascript - 将参数传递给 angularjs 自定义过滤器

转载 作者:行者123 更新时间:2023-12-03 02:08:24 25 4
gpt4 key购买 nike

我有一个全局过滤器,它根据文本输入过滤数据。

<search-box ng-model="vm.filter.keyword"></search-box>

并且,我们使用这样的过滤器

<tr ng-repeat="group in vm.groups | searchGlobal:vm.filter.keyword

我的过滤器看起来像:

.filter('searchGlobal',
function searchGlobal () {
return function searchGlobal (searchValArr,filterText) {
var filteredData = [];
for(var i = 0; i <searchValArr.length; i++) {
if (searchValArr[i].name.toLowerCase().indexOf(filterText.toLowerCase()) !== -1 ||
searchValArr[i].id.indexOf(filterText) !== -1) {
filteredData.push(searchValArr[i]);
}
}
return filteredData;
};
});

现在,这就是问题所在。

要查找的字段可能不是 nameid

在某些情况下,它们可能是 姓名电话号码

在某些情况下姓名年龄引用编号

如何相应地处理过滤器内的场景逻辑?

最佳答案

您可以再添加一个参数来检查您想要的属性

<tr ng-repeat="group in vm.groups | searchGlobal:vm.filter.keyword:vm.filter.listKeys

.filter('searchGlobal',
function searchGlobal () {
return function searchGlobal (searchValArr,filterText, listKeys) {
var filteredData = [];
var listIdAdd = [];

if (angular.isUnDefined(listKeys) || !angular.isArray(listKeys)) {
listKeys = ['name', 'id'];
}
for(var i = 0; i <searchValArr.length; i++) {
for (var j = 0; j < listKeys.length; j++) {
if (searchValArr[i][listKeys[j]].toLowerCase().indexOf(filterText.toLowerCase()) !== -1 &&
listIdAdd.indexOf(searchValArr[i].id === -1)) {
filteredData.push(searchValArr[i]);
listIdAdd.push(searchValArr[i].id);
}
}
}
return filteredData;
};
});

希望这有帮助

关于javascript - 将参数传递给 angularjs 自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49689594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com