更新:我想我对文档的了解还不够好,但是您绝对可以使用具有这种语法的过滤器过滤器(请参阅this fiddle)按对象上的属性进行过滤:
<tr ng-repeat="user in users | filter:{status:4}">
这是我的原始答案,以防它帮助某人:
使用过滤器过滤器,您将无法传递参数,但您至少可以做两件事。
1)在范围变量中设置要过滤的数据,并在过滤器函数中引用它,就像这个小提琴一样。
JavaScript:
$scope.status = 1;
$scope.users = [{name: 'first user', status: 1},
{name: 'second user', status: 2},
{name: 'third user', status: 3}];
$scope.isStatus = function(user){
return (user.status == $scope.status);
};
html:
<li ng-repeat="user in users | filter:isStatus">
或者
2)创建一个新的过滤器,它接受像这个小提琴这样的参数。
JavaScript:
var myApp = angular.module('myApp', []);
myApp.filter('isStatus', function() {
return function(input, status) {
var out = [];
for (var i = 0; i < input.length; i++){
if(input[i].status == status)
out.push(input[i]);
}
return out;
};
});
html:
<li ng-repeat="user in users | isStatus:3">
请注意,此过滤器假定status
数组中的对象中有一个属性,这可能会降低其可重用性,但这只是一个示例。您可以阅读此内容以获取有关创建过滤器的更多信息。