2016-02-22 4 views
0

У меня есть массив, как, например:AngularJS фильтровать массив в массиве

$scope.posts = [ 
    {"from":"Aaron", "groups":[1,2,3]}, 
    {"from":"Byron", "groups":[1,2,4]}, 
    {"from":"Caren", "groups":[1,3,5]} 
] 

Я пытаюсь фильтровать по группе в контроллере. Так, например, если мне нужны только сообщения, в которых группы содержат 2, он будет показывать только сообщения Аарона и Байрона.

Я попытался сделать это с помощью кнопки ng-click функции:

<button ng-click="filterByGroup(2)">Filter</button> 

И в контроллере,

.controller ('Ctrl',$scope, $filter) { 

    $scope.posts = [ 
     {"from":"Aaron", "groups":[1,2,3]}, 
     {"from":"Byron", "groups":[1,2,4]}, 
     {"from":"Caren", "groups":[1,3,5]} 
    ]; 

    $scope.filterByGroup = function (group_no){ 
     $filter('filter')($scope.posts,?,group_no) 
    } 
} 

Я знаю, что могу сделать функцию в, но я не знаю, как Сделай так. Думал сделать indexOf, но я не могу сделать groups.IndexOf(group_no).

Любая помощь приветствуется!

+0

решение фактически создать функцию фильтра, который делает использовать 'IndexOf()' на группы собственности. Обратите внимание, что '$ filter' ничего не делает без назначения возвращаемого значения – charlietfl

+0

Ah .... да. теперь я понимаю. Благодаря! –

ответ

0

не могли бы вы сделать

<div ng-repeat="post in posts | filter: { groups: 2 } : true"> 
    {{ post.from }} 
    </div> 

скрипку - https://jsfiddle.net/0fqavhbu/

+0

Я не могу сделать это в HTML, поскольку у меня уже есть фильтр с помощью ввода текста, подключенного для него. Хм, я думаю, что могу выполнить функцию (item) {return item.groups.indexOf (group_id)}; штучка. На моем мобильном телефоне прямо сейчас, попробуем позже. –

Смежные вопросы