2017-08-18 8 views
1

数字の配列に基づいてng-repeatで一連の結果をフィルタリングする方法を見つけるのに苦労しています。数字は、私が見たい、または見たくない結果を表すことができます。私は、ビューでフィルタを使用することができ、動作する1つの番号でフィルタを使用しますが、配列を配置し、配列でフィルタしたいと思います。フィルタがビュー、コントローラ、または別のフィルタにあるかどうかは気にしません。数値の配列からngRepeatの項目をフィルタリングするにはどうすればよいですか?

次のコードが正常に私はここに配列

<div ng-repeat="topic in topics | filter:{forum_id:ARRAY_HERE}"> 
    Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}} 
    </div> 

全plunkによってフィルタリングする60

<div ng-repeat="topic in topics | filter:{forum_id:60}"> 
    Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}} 
    </div> 

のフォーラムのIDを持つトピックをフィルタリング: https://plnkr.co/edit/dCZ7DV?p=preview

+1

[mcve]にすべての関連コードを質問に含めてください。ファイアウォールの背後にはコード共有サイトへの移動を許可しない人が多いため、問題を示すコードへのリンクを投稿するだけではありません。スタックスニペットを使用して、多くのWeb機能を複製できます。 –

答えて

1

自分を渡しますフィルター機能:

<div ng-repeat="topic in topics | filter:myFilterMethod(topic)"> 
    Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}} 
</div> 

とあなたのコントローラで:

$scope.myFilterMethod = function() { 
    return function(e) { 
     return $scope.filterBy.includes(e.forum_id); 
    } 
} 

updated plunkr

1

また、あなたはこのためにng-ifindexOf機能を使用することができます。

<div ng-repeat="topic in topics" ng-if="filterBy.indexOf(topic.forum_id) !== -1"> 
    Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}} 
</div> 

Demo

+0

ハディとバオの両方の例は素晴らしいです。パフォーマンスの観点からどれが最適でしょうか? – mediaguru

+1

私はババオの答えは最高だと思います。 –

1

ネイティブに、角度のフィルタ特性がそのように動作しませんので、ご自身で手動フィルタを定義する必要があります。

あなたはこのanswer

angular.module('myApp').filter('selectedArray', function() { 
    return function(array, tags) { 
     return array.filter(function(object) { 

      for (var i in object.XXX) { 
       if (array.indexOf(object.XXX[i]) != -1) { 
        return true; 
       } 
      } 
      return false; 

     }); 
    }; 
}); 

のようにそれを行うことができ、その後、あなたは次のようにそれを使用することができます応答はオブジェクトの配列であるとして、あなたはそれを調整する必要があります。この例では

<ul> 
    <li ng-repeat="task in tasks | selectedArray:Array"></li> 
</ul> 

あなたの配列に、

希望します。

関連する問題