1

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

1- ng-repeat + 过滤器工作正常:

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

2- ng-repeat + filter + pagination 也可以正常工作:

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

3-问题是当我结合 ng-repeat + Filter + Pagination + track by $index

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

我的索引值在每页中从 0 重新开始到 4

这是我的桌子的屏幕截图

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

4

2 回答 2

2

最后,我用另一个逻辑解决了我的问题,我使用 track by $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 来确定当前对象。

于 2016-05-13T14:47:00.673 回答
0

通常正确的语法是这样的:

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

希望这可以帮助

于 2016-05-12T15:39:24.630 回答