Javascript 角度JS过滤器组选择过滤器

Javascript 角度JS过滤器组选择过滤器,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我有一个类似于下面的用户对象: $scope.users = [ { name : 'John Doe', attached_groups = [ {1:object}, {2:object} ] }, { name : 'Bob Doe', attached_groups = [ {3:object}

我有一个类似于下面的用户对象:

$scope.users = [
     { 
         name : 'John Doe',
         attached_groups = [
            {1:object},
            {2:object}
         ]
     },
     { 
         name : 'Bob Doe',
         attached_groups = [
            {3:object},
            {4:object}
         ]
     }
];
在我的HTML中,我选择了以下组

<select id="group_filter">
     <option value="1">Group 1</option>
     <option value="2">Group 2</option>
     <option value="3">Group 3</option>
     <option value="4">Group 4</option>
</select>

第一组
第2组
第3组
第4组
我想在组上的ng repeat to filer中添加一个筛选器。我重复以下内容

<tr ng-repeat="user in users| filter:query>

创建文本类型的输入,并
ng model=“query”


然后将对其进行过滤:

<tr ng-repeat="x in users | filter:query">...</tr>
。。。

我没有改变$scope.users的结构,但是你需要检查一下,因为我认为这不是最好的方法

重要的是:

您需要定义搜索过滤器:

$scope.search = function(user) {

    if ($scope.filter === undefined ) {
      return true;
    }

    var match = false;

    angular.forEach(user.attached_groups, function(group) {
      if (group.hasOwnProperty($scope.filter)) {
        match = true;
      }
    });

    return match;
 };

如果更改附加的组,则筛选器可能会更容易。您可以在这里看到示例:

$scope.users很奇怪。你确定没有其他的结构?太好了。你是一个传奇:-)
ng-repeat="user in users | filter:search"
$scope.search = function(user) {

    if ($scope.filter === undefined ) {
      return true;
    }

    var match = false;

    angular.forEach(user.attached_groups, function(group) {
      if (group.hasOwnProperty($scope.filter)) {
        match = true;
      }
    });

    return match;
 };