我正在尝试根据接收两个参数的自定义过滤器在ng-repeat内部创建过滤器。同时,其中一个参数是重复对象的一个属性。
所以在我的ng-repeat代码中我有:
<tr ng-repeat="player in myTeam | bitwiseAnd:{firstNumber: player.Flag, secondNumber: type}">
但它不起作用。如果我调试它,过滤器接收第一个参数undefined。
我已阅读文档:https://docs.angularjs.org/guide/filter
我还在SO中阅读了多个相关问题
没有成功。
我创建了一个plunker,当我将它用作表达式时,我们可以看到过滤器是如何正常工作的,所以可能问题是在ng-repeat语句中发送值。
以下是plunker: http://plnkr.co/edit/IGvDBq?p=preview
感谢您的时间
答案 0 :(得分:3)
myTeam | bitwiseAnd
将bitwise
过滤器整体应用于team
数组,而非玩家。所以效果就像写作
<tr ng-repeat="player in true">
如果过滤器返回true。你想要的是一个返回数组的过滤器。您可以创建自己的过滤器或使用filterfilter。后者与你的相结合很棘手,但这是可能的。首先,在控制器中定义谓词函数
$scope.bitwiseAnd = function(type) {
return function(player) {
return $filter('bitwiseAnd')(player.Flag, type);
}
}
该功能适用于您的bitwiseAnd
过滤器,并且本身适用于每个玩家。然后使用filterfilter和该函数:
<tr ng-repeat="player in myTeam | filter:bitwiseAnd(type)>
答案 1 :(得分:2)
由于目的是显示使用'true'值传递过滤器的用户,下面的代码可以提供帮助:
<tr ng-repeat="player in myTeam" ng-if="player.Flag|bitwiseAnd:type">