【问题标题】:Where to add 'track by $index' when using Filter and Pagination in the same ng-repeat在同一个 ng-repeat 中使用过滤器和分页时在哪里添加'track by $index'
【发布时间】:2016-09-08 04:28:33
【问题描述】:

我有我的 ng-repeat 和过滤器,然后我添加了 bootstrap-ui 分页,一切正常

要添加字段编辑,我需要使用'track by $index',但我找不到将其添加到我的 ng-repeat 的正确方法, 这是我的 HTML 视图:

<tr data-ng-repeat="target in targets | filter:search | startFrom:(currentPage - 1) * pageSize  | limitTo: pageSize "> 
  <td><input type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(targets[$index])" ng-model="targets[$index].YEAR"></td>
  <td><input type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(targets[$index])" ng-model="targets[$index].MONTH"></td>
  <td><input type="text" ng-model-options="{ updateOn: 'blur' }" ng-change="updateTarget(targets[$index])" ng-model="targets[$index].TV"></td>
</tr>

Here is my table screen shot

我的 PageSize Limit 设置为 5,因此我的索引在每个页面中从 1 重新开始到 5,因为我没有在 ng-repeat 中按 $index 添加轨道 因此,如果我编辑第 2 行,它将编辑每页中的每个第 2 行,

关于在同一 ng-repeat 中使用过滤器和分页时如何添加“track by $index”的任何想法

【问题讨论】:

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


    【解决方案1】:

    根据 Angular 文档here

    注意:track by 必须始终是最后一个表达式:

    <div ng-repeat="model in collection | orderBy: 'id' as filtered_result track by model.id">
        {{model.name}}
    </div>
    

    【讨论】:

    • 我很确定 model in collection track by $index | orderBy: 'id' 也可以使用...
    • 我在没有分页的情况下测试了我的 ng-repeat: 我的索引正常工作,问题是当我添加“| startFrom:(currentPage - 1) * pageSize | limitTo: pageSize track by $index”时,我无法再获得我的表格,要恢复 Filter + Track by $index 有效,Filter + Pagination 也有效,但是 Filter + 分页 + 跟踪 $index 不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    相关资源
    最近更新 更多