2014-01-12 4 views
0

я этонесколько фильтров в угловом зрении

<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq'))"> 

это работает отлично, и показать мне имя JSON Raq как отфильтрованный результат, но теперь мне нужно два имени. Джейсон и Марк

Я попробовал это, чтобы получить его работу, но никакого успеха

<li ng-repeat="phone in (filteredNumber = (phones | filter : {'jason Raq':'Mark'}))"> 

Я также попытался

<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq' | filter :'Mark'))"> 

но не повезло ... как не мы делаем несколько фильтров?

ответ

1

Попробуйте это:

<li ng-repeat="phone in (filteredNumber = (phones | filter : 'jason Raq').concat((phones | filter : 'Mark')))"> 

DEMO

Это работает, но это, кажется, что вы неправильно концепция углового фильтра.

Значение фильтра используется для соответствия элементам, которые удовлетворяют этому значению.

В своем коде, это все равно, что вы хотите указывает несколько значений и использовать ИЛИ условие соответствия каких-либо элементов, удовлетворяющих одному из значений.

Если вам нужно что-то сделать, вы должны написать свой собственный фильтр. Как это:

app.filter('customFilter', function() { 
    return function(input, filterValues) { 
     var out = []; 
     for (var i = 0; i < input.length; i++) { 
     if (filterValues.indexOf(input[i]) >= 0){ 
      out.push(input[i]); 
     } 
     } 

     return out; 
    } 
    }); 

Использование:

<li ng-repeat="phone in (filteredNumber = (phones | customFilter : ['jason Raq','Mark']))"> 

Или:

<li ng-repeat="phone in phones | customFilter : ['jason Raq','Mark']"> 

DEMO

1

Попробуйте кладя имена на массиве, а затем процеживают phones основе в этом массиве:

<li ng-repeat="phone in (filteredNumber = (phones | filter : ['jason Raq','Mark'])"> 
2

Вы можете использовать функцию контроллера, чтобы получить filteredNumber как это

<li ng-repeat="phone in phones | filter : filterByName"> 
    <span ng-bind="phone.name"></span> 
</li> 

и в контроллере

$scope.filterByName= function(phone){ 
    return (phone.name === 'jason Raq') || (phone.name === 'Mark'); 
} 

Demo

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