一尘不染

了解ngRepeat的“跟踪依据”表达

angularjs

我很难理解angularjs中ng-repeat表达式的 轨迹是
如何工作的。该文档非常稀缺:http :
//docs.angularjs.org/api/ng/directive/ngRepeat

您能解释一下这两个代码片段在 数据绑定 和其他相关方面的区别吗?

与: track by $index

<!--names is an array-->
<div ng-repeat="(key, value) in names track by $index">
  <input ng-model="value[key]">                         
</div>

没有(相同的输出)

<!--names is an array-->
<div ng-repeat="(key, value) in names">
   <input ng-model="value[key]">                         
</div>

阅读 244

收藏
2020-07-04

共1个答案

一尘不染

你可以track by $index,如果您的数据源中有重复的识别码

例如: $scope.dataSource: [{id:1,name:'one'}, {id:1,name:'one too'}, {id:2,name:'two'}]

使用“ id”作为标识符时,您不能迭代此集合(重复的id:1)。

不会工作:

<element ng-repeat="item.id as item.name for item in dataSource">
  // something with item ...
</element>

但是可以,如果使用track by $index

<element ng-repeat="item in dataSource track by $index">
  // something with item ...
</element>
2020-07-04