2

我試圖根據接收兩個參數的自定義過濾器在ng-repeat內製作一個過濾器。同時,這些參數之一是重複上的對象的一個​​屬性。ng-repeat中的多個參數角度過濾器

所以在我的NG-重複的代碼,我有:

<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

感謝您的時間

回答

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

+0

它的工作!我想過類似的解決方案,但認爲會有更直接的解決方案。 – 2014-08-29 09:58:56

2

由於目的是顯示誰傳與「真」值過濾器的用戶,下面的代碼可以幫助:

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

感謝帕瓦西。它正在工作,但不是當我將它與LimitTo過濾器結合使用時。 – 2014-08-29 07:47:50