1

У меня есть пользователи объект, подобный приведенному ниже:Угловые JS Filter Group Select Filter

$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> 

Я хотел бы добавить фильтр в свой ng-repeat для фильтрации в группах. У меня есть следующий ng-repeat.

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

Любая помощь будет принята с благодарностью.

+1

$ scope.users странно. У вас нет другой структуры? –

ответ

2

Ну я didn't изменить структуру $ scope.users, но вам нужно рассмотреть, потому что я donñt думаю, это лучший способ.

Важным здесь:

http://codepen.io/luarmr/pen/YXVqqp

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; 
}; 

фильтр может быть более легким, если вы измените attached_groups. Вы можете увидеть пример здесь: https://docs.angularjs.org/api/ng/filter/filter

+0

Отлично. Твоя легенда :-) – hawx

1

создать ввод текста типа и ng-model="query".

<input type="text" ng-model="query"> 

это будет фильтроваться:

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