Javascript 将过滤后的数据分配给ng中的控制器变量(如果有)

Javascript 将过滤后的数据分配给ng中的控制器变量(如果有),javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,我想将过滤后的数据分配给ng中的控制器变量,如果: <section ng-if="($ctrl.filteredOperations = $ctrl.operations | filter: customFilter).length > 0"> <header>Count: {{$ctrl.filteredOperations .length}}</header> <div ng-repeat="operation in $ctr

我想将过滤后的数据分配给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>

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

我建议您将筛选移到控制器:

financialService.operations().then(function(ops){
    vm.operations = ops;
});
$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>

计数:{{$ctrl.filteredOperations.length}
...


在我看来,当逻辑变得复杂时,最好将其移动到控制器,而不是在HTML中执行所有操作。

我建议您将过滤移动到控制器:

financialService.operations().then(function(ops){
    vm.operations = ops;
});
$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>

计数:{{$ctrl.filteredOperations.length}
...


在我看来,当逻辑变得复杂时,最好将其移动到控制器,而不是全部使用HTML。

是的,我知道,这会容易得多。但我想通过引用源代码进行绑定。在我的例子中,
$ctrl.operations
-是一个源代码引用。我想对过滤后的数据进行深入监视。@Kindzoku说什么?实际上不知道如何应对“说什么”。让我们假装我们忘记了我最初的问题,也忘记了关于这个答案的辩论。让我们从另一端开始。如果可以更改任何操作属性,该怎么办。在这种情况下,我应该如何更改视图?若我将在控制器中分配变量,则
$ctrl.filteredOperations
将保存集合的副本。而且,对服务中的数据源所做的任何更改都不会改变$ctrl.filteredOperations。是的,我知道,这会容易得多。但我想通过引用源代码进行绑定。在我的例子中,
$ctrl.operations
-是一个源代码引用。我想对过滤后的数据进行深入监视。@Kindzoku说什么?实际上不知道如何应对“说什么”。让我们假装我们忘记了我最初的问题,也忘记了关于这个答案的辩论。让我们从另一端开始。如果可以更改任何操作属性,该怎么办。在这种情况下,我应该如何更改视图?若我将在控制器中分配变量,则
$ctrl.filteredOperations
将保存集合的副本。而且,对服务中的数据源所做的任何更改都不会改变$ctrl.filteredOperations。