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
。
我想知道是否可以在 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
。