2017-03-01 19 views
0

は、私は、変数をコントローラにフィルタリングされたデータを割り当てたい場合はNG-で変数をコントローラにデータをフィルタ処理:割り当てが

<section ng-if="($ctrl.filteredOperations = $ctrl.operations | filter: customFilter).length > 0"> 
    <header>Count: {{$ctrl.filteredOperations .length}}</header> 
    <div ng-repeat="operation in $ctrl.filteredOperations ">...</div> 
</section> 

私は運と異なるアプローチを試してみました。

UPDATE

は、なぜ私はこれをやっていますか?

私は操作のコレクションを保持するサービスを持っています。

financialService.operations(); - これは、APIまたはキャッシュからの操作を返します。だから私のコントローラで

:私は任意の手段によって、私のキャッシュを更新する場合

financialService.operations().then(function(ops){ 
    vm.operations = ops; 
}); 

は今、それは私のビューを更新します。

答えて

2

私はあなたのコントローラにフィルタリングを移動するために、あなたをお勧めします:

$ctrl.filteredOperations = $filter('customFilter')($ctrl.operations); 

し、次のようにそれを表示します。私の意見で

<section ng-if="$ctrl.filteredOperations.length"> 
    <header>Count: {{$ctrl.filteredOperations.length}}</header> 
    <div ng-repeat="operation in $ctrl.filteredOperations">...</div> 
</section> 

、ロジックが複雑になったときHTMLですべてを行うのではなく、コントローラに移動する方が常に良いです。

+0

ええ、私は知っている、それはずっと簡単だろう。しかし、私は参照によってソースにバインドしたい。私の場合、 '$ ctrl.operations'はソースリファレンスです。私はフィルタリングされたデータを深く監視したい。 – Kindzoku

+2

@Kindzoku何を言って? – zeroflagL

+0

実際に「何を言おう」と反応する方法がわからない。この答えについての私の最初の質問と討論を忘れてしまったことをふりまとめましょう。他端から始めることができます。操作プロパティーを変更できる場合はどうなりますか?この場合、ビューをどのように変更する必要がありますか?コントローラに変数を代入すると、 '$ ctrl.filteredOperations'はコレクションのコピーを保持します。また、サービス中のデータソースに変更が加えられても、 '$ ctrl.filteredOperations'は邪魔になりません。 – Kindzoku