将过滤后的数据分配给ng-if中的控制器变量

时间:2017-03-01 15:18:32

标签: javascript angularjs angular-filters

我想在ng-if:

中将过滤后的数据分配给控制器变量
<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>

我尝试了不同的方法而没有运气。

更新

为什么我要这样做?

我有一个服务,负责收集操作。

financialService.operations(); - 这将从API或缓存中返回操作。

所以在我的控制器中:

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

现在,如果我以任何方式更新我的缓存,它将更新我的视图。

1 个答案:

答案 0 :(得分: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完成所有操作。