动态添加过滤器到ng-repeat

时间:2014-05-07 19:35:11

标签: angularjs

我希望根据复选框状态将过滤器添加到ng-repeat。

<li ng-repeat="user in users | filter: filters">
    {{user.name}} {{user.job}} {{user.min}}-{{user.max}}
</li>

过滤器可以是数组吗?

第二个问题是,当$ scope.min和$ scope.max为空(初始化)时,如何显示所有记录?

http://jsfiddle.net/nofear87/H5GMD/3/

2 个答案:

答案 0 :(得分:2)

是的,您可以非常轻松地动态更改过滤器,只需指定一个范围变量,您就可以对其进行修改。

此处示例:http://plnkr.co/edit/Au8KFg?p=preview

如果你有

<li ng-repeat="user in users | filter: filters">

那么你的$ scope变量是

$scope.filters = {minMax: false, ... };

至于复选框,如果你的

<input ng-model="minMaxFilter" type="checkbox" ng-change="filters['minMax] =! filters[minMax]"/>MinMAX  

如果您只想更改过滤器的状态

或者如果您想添加新过滤器,可以使用ng-click附加功能或只需按下新值

<input ng-model="newFilterToAdd" type='text' > <button ng-click="filters.push(newFilterToAdd);">Add Filter</button>

要显示所有记录,您需要不应用过滤器(例如将其设为空)或为其指定空值

答案 1 :(得分:1)

您可以尝试根据需要添加两个过滤器。

<li ng-repeat="user in users | filter: searchText | minMax : filterParams">
            {{user.name}} {{user.job}} {{user.min}}-{{user.max}}
</li>

这是 Fiddle

希望它会对你有所帮助。