2015-07-27 4 views
1

ли «фильтр» Поддержка встроенный угловому фильтрации массив в том смысле, что «фильтр, где массив содержит»Угловой фильтр массив, содержащий критерии поиска

Такие следующим образом:

$scope.currentFilter = "Allentown"; 

$scope.users = [{ 
    name: "user1", 
    locations: [ 
     { name: "New York", ... }, 
     { name: "Allentown", ... }, 
     { name: "Anderson", ... }, 
    ] 

}, ... ]; 

<div ng-repeat="user in users | filter : { locations: { name: currentFilter } }"></div> 

В других слова, которые я хочу фильтровать только для пользователей с массивом «местоположения», который СОДЕРЖАЕТ местоположение, которое соответствует строке по имени.

Если нет, то как я могу выполнить это с помощью настраиваемого фильтра?

+1

В чем проблема? код работает, как описано. – dfsq

+0

http://stackoverflow.com/questions/18242520/exact-filter-in-angular – happs

+0

Как упоминалось в @dfsq, работает, как вы описываете. – GPicazo

ответ

1

Ваш фрагмент кода работает с Angular 1.2.13. Если вы используете более старую версию (протестировано на 1.0.1) и не нужно повторно использовать свою процедуру фильтрации на контроллерах (в этом случае вы должны объявить правильный фильтр), вы можете передать встроенный filter предикат функция:

<div ng-repeat="user in users | filter : hasLocation">{{user.name}}</div> 

И написать что-то вроде этого:

$scope.currentFilter = "Allentown"; 

$scope.hasLocation = function(value, index, array) { 
    return value.locations.some(function(location) { 
     return location.name == $scope.currentFilter; 
    }); 
} 

Fiddle here.

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