Javascript 使用自定义筛选器angularjs筛选2个属性
我试图在Angular中过滤多个属性。我可以通过使用角度Javascript 使用自定义筛选器angularjs筛选2个属性,javascript,angularjs,loops,angularjs-scope,angularjs-filter,Javascript,Angularjs,Loops,Angularjs Scope,Angularjs Filter,我试图在Angular中过滤多个属性。我可以通过使用角度过滤器:{title:searchString}轻松过滤一个属性,但要过滤多个属性。。。我创建了自己的自定义过滤器,它尝试通过数组中的任何属性匹配搜索字符串 我需要做的是: 如果通过了John Wayne。。它显示约翰·韦恩,但如果只有约翰或只有韦恩通过。。。它仍然显示约翰·韦恩。同样适用于n w,因为John以n结尾,subTitle以w开头 PS:我只能有一个ng型号 HTML: 我的问题是,我得到一个错误,说: 中继器中不允许重复。使
过滤器:{title:searchString}
轻松过滤一个属性,但要过滤多个属性。。。我创建了自己的自定义过滤器,它尝试通过数组中的任何属性匹配搜索字符串
我需要做的是:
如果通过了John Wayne
。。它显示约翰·韦恩
,但如果只有约翰
或只有韦恩
通过。。。它仍然显示约翰·韦恩。同样适用于n w
,因为John
以n
结尾,subTitle
以w
开头
PS:我只能有一个ng型号
HTML:
我的问题是,我得到一个错误,说:
中继器中不允许重复。使用“跟踪方式”表达式
指定唯一键。中继器:arr1中的电话
由于
arr1
中存在重复项,因此出现此错误。只需添加track by$index
即可获得所需的解决方案
<div ng-repeat="tel in arr1 track by $index | custommFilter: searchString:['title','subTitle']"></div>
由于
arr1
中存在重复项,因此出现此错误。只需添加track by$index
即可获得所需的解决方案
<div ng-repeat="tel in arr1 track by $index | custommFilter: searchString:['title','subTitle']"></div>
我刚刚对您的自定义过滤器进行了一些更新:
app.filter('customFilter',[ function() {
return function(items, searchText, attrs) {
var filtered = [];
for (var i in items){
var keepGoing = true;
angular.forEach(attrs, function(attr) {
console.log(items[i][attr])
if (items[i].hasOwnProperty(attr) && items[i][attr].includes(searchText) && keepGoing) {
filtered.push(items[i]);
keepGoing=false;
}
});
}
return filtered;
};
}])
考虑到在这种情况下,它是区分大小写的
虽然它是工作的预期,我觉得它可以改进
普朗克样品:
我刚刚对您的自定义过滤器进行了一些更新:
app.filter('customFilter',[ function() {
return function(items, searchText, attrs) {
var filtered = [];
for (var i in items){
var keepGoing = true;
angular.forEach(attrs, function(attr) {
console.log(items[i][attr])
if (items[i].hasOwnProperty(attr) && items[i][attr].includes(searchText) && keepGoing) {
filtered.push(items[i]);
keepGoing=false;
}
});
}
return filtered;
};
}])
考虑到在这种情况下,它是区分大小写的
虽然它是工作的预期,我觉得它可以改进
普朗克样品:
您的筛选器名称有错误:筛选器名称中有customFilter,筛选器名称中有custommFilterhtml@ManuelObregozo哎呀。。那是个打字错误。不小心在帖子中插入了这个,但这不是问题我仍然明白它的意思过滤器的意思,你的数组的输出是什么?@ManuelObregozo基本上。。。无论在搜索字段中键入什么。。。我希望它与数组的所有属性相匹配我想我得到了,让我把所有内容放在一个列表中。如果您的筛选器名称中有错误:筛选器名称中有customFilter,筛选器名称中有custommFilterhtml@ManuelObregozo哎呀。。那是个打字错误。不小心在帖子中插入了这个,但这不是问题我仍然明白它的意思过滤器的意思,你的数组的输出是什么?@ManuelObregozo基本上。。。无论在搜索字段中键入什么。。。我希望它能与阵列的所有属性相匹配我想我得到了它,让我把所有的东西放在一起,当我在最后插入曲目时,错误就消失了。。。但现在它没有做我想让它做的事。。。它不会一次使用标题或子标题进行正确筛选。你怎么能同时处理这两个呢?当我在末尾插入track by时,错误就消失了。。。但现在它没有做我想让它做的事。。。它不会一次使用标题或子标题进行正确筛选。你怎么能同时处理这两个呢?我以前也试过:(…但在你的例子中,当我键入“wayne”时,它不起作用)这就是促使我创建自定义筛选器的原因匹配条件也可以是子字符串?似乎按预期工作,请检查。考虑到它区分大小写。如果您不希望它是那样的,只需将该项转换为小写。希望它有帮助我以前也尝试过:(…但在您的示例中,当我键入“wayne”时,它不起作用,这正是导致我创建自定义筛选器的原因匹配条件也可以是子字符串?似乎按预期工作,请检查。考虑到它区分大小写。如果您不想这样,请将该项转换为小写。希望它有所帮助