2017-03-01 51 views
0

我要指派篩選數據NG-如果到控制器的變量:分配過濾的數據到控制器變量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

相關問題