是否可以将参数传递给filter函数,以便您可以按任何名称进行过滤?
就像是
$scope.weDontLike = function(item, name) { console.log(arguments); return item.name != name; };
实际上,还有另一种(也许是更好的解决方案),您可以使用angular的本机“过滤器”过滤器,并且仍将参数传递给自定义过滤器。
考虑以下代码:
<div ng-repeat="group in groups"> <li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)"> <span>{{friend.name}}</span> <li> </div>
要进行此工作,您只需将过滤器定义如下:
$scope.weDontLike = function(name) { return function(friend) { return friend.name != name; } }
如您在这里看到的,weDontLike实际上返回另一个函数,该函数的范围内有您的参数以及来自过滤器的原始项。
我花了两天时间才意识到您可以执行此操作,但尚未在任何地方看到此解决方案。
检出angular.js过滤器的反极性,]以了解如何将其用于过滤器的其他有用操作。