2014-09-15 5 views
5

Я хочу, чтобы иметь возможность фильтровать мою таблицу со многими параметрами, переданными в виде массива. Поэтому я могу создать массив параметров фильтра и передать их. Я не хочу явно указывать, какие столбцы фильтровать, поскольку может быть много столбцов (некоторые из них будут показаны, а некоторые нет).Фильтр AngularJS с несколькими параметрами

HTML выглядит примерно так:

<tr ng-repeat="item in infoData | filter:['param1','param2']"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 

Есть ли место для фильтрации таблицы против нескольких параметров?

Благодаря

ответ

5

Это быстрый и грязный способ сделать то, что вам нужно.

Сначала создайте пользовательский фильтр в контроллер что-то вроде этого:

$scope.customFilter = function(param1, param2) { 
    return function(item) { 
     //return custom stuff here 
    } 
} 

затем в HTML вы делаете это

<tr ng-repeat="item in infoData | filter:customFilter(param1, param2)"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 

это пример с пользовательским фильтром

app.filter('customFilter', function (param1, param2) { 
    return function (item) { 
     //return custom stuff here 
    }; 
}); 

и теперь в html вы делаете это:

<tr ng-repeat="item in infoData | customFilter(param1, param2)"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 
+0

Не следует ли это добавлять к настраиваемому фильтру, а не к контроллеру? – Ben

+0

Это быстрый и грязный способ, но вы, безусловно, можете создать собственный фильтр, особенно если фильтр сложный. Я обновил ответ. –

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