ng-repeat内的多个参数角度滤波器

时间:2014-08-28 15:33:13

标签: javascript angularjs angularjs-ng-repeat angular-filters

我正在尝试根据接收两个参数的自定义过滤器在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

感谢您的时间

2 个答案:

答案 0 :(得分:3)

myTeam | bitwiseAndbitwise过滤器整体应用于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)>

Working Plunker

答案 1 :(得分:2)

由于目的是显示使用'true'值传递过滤器的用户,下面的代码可以提供帮助:

<tr ng-repeat="player in myTeam" ng-if="player.Flag|bitwiseAnd:type">