我想使用在repeat项目的原型上定义的函数来过滤ng-repeat,但我找不到任何引用说明这是否真的可行。像
这样的东西<div ng-repeat="user in users | filter:{'isAdmin()': true} | orderBy:'getFullName()'">
{{user.getFullName()}}
</div>
其中isAdmin返回一个布尔值。 orderBy使用这种表示法,但过滤器似乎不适用于我尝试的任何表示法。有没有办法在没有检查isAdmin()?
的单独函数的情况下完成此任务答案 0 :(得分: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