<divng-repeat="links in slides"><div ng-repeat="link in links track by $index">{{link.name}}</div></div>
Error: [ngRepeat:dupes]
you can 'track by $index' if your data source has duplicate identifiers
e.g.: $scope.dataSource: [{id:1,name:'one'}, {id:1,name:'one too'}, {id:2,name:'two'}]
you can't iterate this collection while using 'id' as identifier (duplicate id:1).
WON'T WORK:
<element ng-repeat="item.id as item.name for item in dataSource">
// something with item ...
</element>
but you can, if using 'track by $index':
<element ng-repeat="item in dataSource track by $index">
// something with item ...
</element>
这个出错提示具体到的情况,意思是指数组中有2个以上的相同数字。ngRepeat不允许collection中存在两个相同Id的对象
For example:
item in items
is equivalent toitem in items track by $id(item)
. This implies that the DOM elements will be associated by item identity in the array.
对于数字对象来说,它的id就是它自身的值,因此,数组中是不允许存在两个相同的数字的。为了规避这个错误,需要定义自己的track by表达式。
例如:item in items track by item.id
或者item in items track by fnCustomId(item)
。嫌麻烦的话,直接拿循环的索引变量$index来用item in items track by $index
</pre><html><pre name="code" class="html"><div ng-app>
<div ng-controller="test">
<div ng-repeat="links in slides">
<hr/>
<div ng-repeat="link in links track by $index">
{{link}}
</div>
</div>
</div>
</div>
<script>
function test($scope) {
$scope.slides = [
[ 1, 1, 1 ],
[ 4, 5, 6 ],
];
}
</script>
</html>