$ index的ng-repeat轨道不与分页一起使用

时间:2016-05-12 14:46:49

标签: angularjs filter pagination ng-repeat angularjs-track-by

我正在使用ng-repeat + Filter + Pagination(ui-bootstrap)

1 ng-repeat + filter工作正常:

<tr data-ng-repeat="target in targets | filter:search track by $index">

2 ng-repeat + filter +分页也正常工作:

<tr data-ng-repeat="target in targets | filter:search  | startFrom:(currentPage - 1) * pageSize  | limitTo: pageSize ">

3-问题是当我通过$ index

组合ng-repeat + Filter + Pagination + track时
<tr data-ng-repeat="target in targets | filter:search  | startFrom:(currentPage - 1) * pageSize  | limitTo: pageSize track by $index">

我的索引值从每页0到4重新启动

here is a screen shot of my table

关于“跟踪$ index”的正确顺序的任何想法!我应该把它放在哪里?

2 个答案:

答案 0 :(得分:2)

最后我用其他逻辑解决了我的问题,我使用跟踪$ index来编辑我表格中的选定行字段,如下所示:

<td><input class="todo" type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(targets[$index])" ng-model="target.YEAR"></td>
<td><input class="todo" type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(targets[$index])" ng-model="target.MONTH"></td>

现在我从ng-repeat中删除了$ index的曲目,并将我的td更改为:

<td><input style="width:40px" class="todo" type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(target)" ng-model="target.YEAR"></td>
<td><input style="width:40px" class="todo" type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(target)" ng-model="target.MONTH"></td>

所以在ng-change上,我的更新函数将以所有对象作为参数调用,不需要$ index来确定当前对象。

答案 1 :(得分:0)

通常正确的sintax是这样的:

<div ng-repeat="item in items track by $index | my filter....">

希望这会有所帮助