我正在尝试基于接收两个参数的自定义过滤器在 ng-repeat 内创建一个过滤器。同时,这些参数之一是重复对象的一个属性。
所以在我的 ng-repeat 代码中我有:
<tr ng-repeat="player in myTeam | bitwiseAnd:{firstNumber: player.Flag, secondNumber: type}">
但是它不起作用。如果我调试它,过滤器会在第一个参数中接收未定义的参数。
我已阅读文档:https://docs.angularjs.org/guide/filter
我还阅读了 SO 中的多个相关问题
- Filtering by Multiple Specific Model Properties in AngularJS (in OR relationship)
- Passing arguments to angularjs filters
- How do I call an Angular.js filter with multiple arguments?
没有成功。
我创建了一个 plunker,在其中我们可以看到当我将其用作表达式时过滤器如何正常工作,因此问题可能是在 ng-repeat 语句内发送值。
这是一个骗子: http://plnkr.co/edit/IGvDBq?p=preview
感谢您的宝贵时间
最佳答案
我的团队 | bitwiseAnd
将 bitwise
过滤器应用于整个 team
数组,而不是玩家。所以效果就跟写的一样
<tr ng-repeat="player in true">
如果过滤器返回true。您想要的是一个返回数组的过滤器。您可以创建自己的过滤器或使用过滤器filter。后一个与你的结合起来很棘手,但这是可能的。首先,您在 Controller 中定义一个谓词函数
$scope.bitwiseAnd = function(type) {
return function(player) {
return $filter('bitwiseAnd')(player.Flag, type);
}
}
该函数会应用您的 bitwiseAnd
过滤器,并且它本身也会应用于每个玩家。然后您使用具有该功能的过滤器过滤器:
<tr ng-repeat="player in myTeam | filter:bitwiseAnd(type)>
关于javascript - ng-repeat 内的多参数 Angular 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552688/