2016-07-28 23 views
0

我想知道是否可以一次性綁定ng-repeat指令中的變量,然後過濾該變量。ng-repeat一次性綁定後的AngularJS過濾器

我的代碼現在不幸地執行一次性變量的AFTER過濾綁定,儘管我需要在執行過濾之前完成綁定。

這裏是我的代碼:

<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是一個數組,可能得到的側20000元,因此需要進行一次性的結合。

這些過濾器既用於搜索又用於分頁。我希望能夠做的就是像下面這樣:

<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列的主要表達式。

有沒有人有辦法解決這個限制?

+0

我建議看看模塊[Bindonce](https://github.com/Pasvaz/bindonce)在AngularJS中的高性能綁定 –

+0

我嘗試過使用它,並沒有傷心。 – MLAlex

回答

1

我不認爲這實際上是可能的。任何一次綁定值在應用過濾後都不會改變。

您只應將篩選結果傳遞給您的ng-repeat。在性能方面| limitTo完成所有的訣竅。你應該把它放在你的控制器裏面 - 我認爲你的錯誤來自於: or-operator

+0

錯誤來自於此(:: vm.items)。我需要的是讓陣列在HTML標記中可用,而不用在Angular digest循環中。 – MLAlex

+1

您應該在這裏刪除這些括號。我也認爲,在控制器中過濾數組並將過濾後的結果傳遞給ng-repeat和| limitTo應該沒問題。 – devjsp

相關問題