如何使用AngularJS在多个对象上应用过滤器?

15 浏览
0 Comments

如何使用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日
0
0 Comments

http://docs.angularjs.org/api/ng.filter:filter

 
  {{user.name}} {{friend.name}} {{friend.age}}


(注:这段文字只是网址和强调数字"123",并没有其他具体意义)

0
0 Comments

因为需要同时筛选朋友数组的某些属性和用户,所以需要创建自己的自定义过滤器,该过滤器接受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示例

0