AngularJS:使用ng-repeat保留插入顺序

时间:2014-01-20 20:35:19

标签: angularjs

我正在实施一个带有ng-repeat的自动完成系统。基本上,我有一系列对象提供ng-repeat。我注意到当我向数组中插入新内容时,不会保留插入顺序。例如

广告订单

A - B - C

ng-repeat渲染顺序

A - C - B

(A,B,C中的每一个都是具有2个键'id'和'name'的对象)

仔细观察一下,我发现这种行为是由如何生成$$ hashKey引起的。 'C'以某种方式获得了一个小于'B'的哈希键,所以它在'B'之前,即使它与插入顺序相反。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您应该使用track by语法(需要angular.js > = 1.2

<div ng-repeat="item in items track by item.id">

阅读这篇文章:http://www.bennadel.com/blog/2556-Using-Track-By-With-ngRepeat-In-AngularJS-1-2.htm


来自ngRepeat docs

  表达式跟踪中的

变量由tracking_expression`

组成      

您还可以提供可选的跟踪功能,该功能可用于将集合中的对象与DOM元素相关联。如果未指定跟踪功能,则ng-repeat按集合中的标识关联元素。使用多个跟踪功能解析为同一个密钥是错误的。 (这意味着两个不同的对象被映射到同一个DOM元素,这是不可能的。)在指定跟踪表达式之前,应将过滤器应用于表达式。

相关问题