更新:我想我没有仔细阅读文档,但你绝对可以使用filter过滤器并采用这种语法(参见此fiddle),以按对象上的属性进行筛选:
<tr ng-repeat="user in users | filter:{status:4}">
以下是我的原始回答,希望对某些人有所帮助:
使用过滤器,您无法传递参数,但至少有两件事情可以做。
1) 将要过滤的数据设置为作用域变量,并在您的过滤器函数中引用它,例如此fiddle。
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
属性,这可能会使其复用性降低,但这只是一个例子。您可以阅读此文档以了解更多有关创建过滤器的信息。