0

ng-repeatで表示される配列とネストされた配列の両方に影響を与える3つのフィルタがあります。ng-repeat内部の一般的なフィルタを無効にする

それはそうのように表示されます:

<div ng-repeat="pa in products | filter:one | filter:two | filter:three"> 
    <div ng-repeat="vari in pa.variacions | filter:two | filter:three"> 
    </div>  
</div> 

フィルタが素晴らしい仕事します。 最初の配列内にボタンを追加してフィルタを無効にしようとすると問題が発生します。今のところは、ng-repeatの特定の項目のフィルタのみを無効にしますが、の項目は、すべての項目のフィルタを無効にしたいという欲求の効果です。

これは、それがどのように見えるかです:

<div ng-repeat="pa in products | filter:one | filter:two | filter:three"> 
    <div ng-repeat="vari in pa.variacions | filter:two | filter:three"> 
    </div> 

    <a ng-click="one = {}; two = {}; three = {}">Show all</a> 
</div> 

どのように私は、このボタンはNGリピート内のすべての項目のフィルタを殺す作るために管理することができないだけのために?

+0

問題は再現不可能で、うまく動作します –

答えて

0

ng-repeatは、子スコープを作成します。子スコープレベルでスコーププロパティを再割り当てするので、オリジナルを変更していません。

プロパティを使用して、プロパティがコントローラのトップレベルで再割り当てされるようにします。子供が更新されます以降のダイジェストサイクルは、スコープ

<a ng-click="reset()">Show all</a> 

コントローラー:

$scope.reset = function(){ 
    ['one','two','three'].forEach(function(prop){ 
     $scope[prop] = {}; 
    }) 
} 

あなたはすべてのフィルタのための一つのオブジェクトを使用していた場合は、この問題は存在しなかったでしょうcontrollerAsを使用して...またはされた場合ビュー内でそのオブジェクトのプロパティを更新しました

+0

動作していないようです。コントローラーではなくHTMLでフィルターを定義することが原因ですか? 'Pagès' –

+0

はい....それが子スコープで定義されている場合。同じアイデア、スコープの下にすべての方法を継承する関数に移動 – charlietfl

+0

ではない、フィルタをアクティブにするリンクはng-repeatの外にあります! :) –

関連する問題