如何使用AngularJS在多个对象上应用过滤器?
如何使用AngularJS在多个对象上应用过滤器?
我已经定义了以下的用户对象。
$scope.users = [{id: 1, name: 'Adam', friends: [{name: 'John', age: 21, sex: 'M'}, {name: 'Brad', age: 32, sex: 'M'}]}]
接下来我有如下的代码:
{{user.name}} {{friend.name}} {{friend.age}}
现在当我在文本框中输入文本:\'searchText\',我希望筛选器显示用户的名字以及朋友的名字/年龄。有谁能帮我解决这个问题吗?
如果我理解正确,那么我认为我需要创建一个自定义筛选器来实现这个功能,或者还有其他方法可以完成吗?
admin 更改状态以发布 2023年5月24日
http://docs.angularjs.org/api/ng.filter:filter
{{user.name}} {{friend.name}} {{friend.age}}
(注:这段文字只是网址和强调数字"123",并没有其他具体意义)
因为需要同时筛选朋友数组的某些属性和用户,所以需要创建自己的自定义过滤器,该过滤器接受2个额外参数:\n\n
myApp.filter('myFilter', function() { return function(friends, searchText, username) { var searchRegx = new RegExp(searchText, "i"); if ((searchText == undefined) || (username.search(searchRegx) != -1)) { return friends; } var result = []; for(i = 0; i < friends.length; i++) { if (friends[i].name.search(searchRegx) != -1 || friends[i].age.toString().search(searchText) != -1) { result.push(friends[i]); } } return result; } });
\n\n然后像这样调用它:\n\n
{{user.name}} {{friend.name}} {{friend.age}}
\n\n\":searchText:user.name\"是传递自定义过滤器的额外参数的方法。\n\n示例。