AngularJS 在 ng-repeat 中一次性绑定后过滤

AngularJS Filter After One Time Binding in ng-repeat

我想知道是否可以在 ng-repeat 指令中一次性绑定一个变量,然后对该变量进行过滤。

虽然我需要在执行过滤之前完成绑定,但不幸的是,我现在的代码在执行过滤后对变量执行一次性绑定。

这是我的代码:

<div flex="20" ng-repeat="item in ::vm.items | filter: vm.itemSearch
    | limitTo: vm.query.limit : (vm.query.page -1) * vm.query.limit">

</div>

请记住,vm.items 是一个可能包含 20,000 个元素的数组,因此需要一次性绑定。

过滤器用于搜索和分页。我希望能够做的是类似以下的事情:

<div flex="20" ng-repeat="item in (::vm.items) | filter: vm.itemSearch
    | limitTo: vm.query.limit : (vm.query.page -1) * vm.query.limit">

</div>

但是,由于以下错误,这不是有效的 AngularJS 语法:

语法错误:标记“:”不是表达式第 2 列的主表达式。

有没有人有办法绕过这个限制?

我认为这实际上不可能。任何一次绑定值在应用过滤后都不会改变。

您应该只将过滤后的结果传递给您的 ng-repeat。 Performancewise | limitTo 可以解决所有问题。你应该把它放到你的控制器中的一个方法中——我认为你的错误来自那里的 : or-operator