2014-10-05 58 views
0

我想使用重复项目原型上定义的函数来过滤ng-repeat,但是我找不到任何参考,指出这是否实际可行。类似于AngularJS通过对象原型函数进行过滤

<div ng-repeat="user in users | filter:{'isAdmin()': true} | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

其中isAdmin返回布尔值。 orderBy适用于这种表示法,但过滤器似乎不适用于我尝试的任何表示法。如果没有单独的函数来检查isAdmin(),有什么办法可以实现吗?

+0

写自定义过滤器 – Lrrr 2014-10-05 12:11:00

回答

1

你可以调用在控制器中定义的函数:

$scope.isAdmin = function(x) { 
    if (x.name == 'bob') { 
     return true; 
    } 
} 

函数必须返回true或false。

,并在你的HTML中使用它:

<div ng-repeat="user in users | filter:isAdmin | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

创建custome filter,例如:

app.filter('isAdmin', [function() { 
    return function(users) { 
     var filtered = []; 
     for (var i = 0; i < users.length; i++) { 
     var user = users[i]; 

     //here you can use what ever function you want to check if user is admin 
     if (user.name == 'bob') { 
      filtered.push(user); 
     } 
     } 
     return filtered; 
    }; 
    } 
]); 

,并用它在你的HTML像这样:

<div ng-repeat="user in users | isAdmin | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

这里是一个plnkr