动态更改过滤器表达式

时间:2013-01-12 17:59:40

标签: angularjs

我有一系列记录。此数组将根据用户的权限显示不同的记录。

因此,我必须根据用户使用不同的过滤器。如何根据用户的权限创建这样一个带变量函数的表达式 -

<div ng-repeat="r in records | filter:{isVisible:true}"

上面有一个过滤表达式{isVisible:true}。我想根据用户动态分配不同的过滤器表达式。所以user2将{isCommon:'M2'}。

2 个答案:

答案 0 :(得分:12)

过滤表达式也可以是变量:

<li ng-repeat="item in items | filter:filterExpr">{{item.name}}</li>

表达式在范围内定义:

$scope.filterExpr = { tester: true };

这是一个更完整地展示这一点的Plunker:http://plnkr.co/edit/Au8KFg?p=preview

PS:请注意@ MarkRajcok对你帖子的评论,因为非常非常重要。

答案 1 :(得分:2)

2Terry Drozdowski - 绝对正确:过滤器不适用于最新版本(1.1.7)的布尔值。感谢您指出这一点 - 您必须使用引号:

<div ng-repeat="r in records | filter:{isVisible:'true'}"