我努力尝试并访问了许多类似这样的问题,但仍然无法解决这个问题。
我想在角度滤镜功能中传递额外的参数。我发现解决方案如下,但它不起作用。我在ng-repeat
中使用的对象未定义。
<li ng-repeat="user in users | filter:isStatus(user,secondParam)">{{user.name}}</li>
如下所示,角度自定义滤镜有解决方案,但也不能使用角度滤镜功能。
<li ng-repeat="user in users | filter:isStatus:user:secondParam">{{user.name}}</li>
jsFiddle - 你可以在这里看到我的问题。
答案 0 :(得分:14)
将尝试:
$scope.isStatus = function(secondParam, thirdParam){
return function(user) {
console.log(secondParam);
console.log(thirdParam);
return user.status == $scope.status;
}
答案 1 :(得分:4)
根据您的情况,您可以使用谓词表达式而不是自定义过滤器:
<li ng-repeat="user in users | filter:{status: status, name: name}">{{user.name}}</li>
看看这个小提琴:http://jsfiddle.net/ovym2tpr/28/
你可以使用自定义过滤器,它只是执行得不是很好,特别是在嵌套ng-repeat
下
答案 2 :(得分:1)
这很简单,只需这样做
<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>
答案 3 :(得分:0)
How do I call an Angular.js filter with multiple arguments?
AngularJS : Custom filters and ng-repeat
myApp.filter("isStatus ", function() { // register new filter
return function(user, secondParam, thirdParam) { // filter arguments
return user.status == $scope.status; // implementation
};
});
从模板调用
<li ng-repeat="user in users | isStatus:secondParam">{{user.name}}</li>