多参数角度滤波器内ng重复

Multiple parameters angular filter inside ng-repeat

本文关键字:ng 重复 滤波器 参数      更新时间:2023-09-26

我试图在ng repeat中创建一个基于接收两个参数的自定义过滤器的过滤器。同时,其中一个参数是重复对象的一个属性。

所以在我的ng重复代码中,我有:

<tr ng-repeat="player in myTeam | bitwiseAnd:{firstNumber: player.Flag, secondNumber: type}">

但它不起作用。如果我调试它,过滤器将接收未定义的第一个参数。

我已经阅读了文档:https://docs.angularjs.org/guide/filter

我还阅读了SO 中的多个相关问题

  • AngularJS中多个特定模型属性的过滤(OR关系)
  • 将参数传递给angularjs过滤器
  • 如何调用具有多个参数的Angular.js过滤器

没有成功。

我已经创建了一个plunker,当我将其用作表达式时,我们可以在其中看到过滤器是如何正常工作的,所以问题可能是在ng repeat语句中发送值。

以下是plunker:http://plnkr.co/edit/IGvDBq?p=preview

感谢您抽出时间

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过滤器,它本身也应用于每个玩家。然后使用具有以下功能的过滤器:

<tr ng-repeat="player in myTeam | filter:bitwiseAnd(type)>

工作Plunker

由于目的是显示通过"true"值筛选的用户,下面的代码可以帮助:

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