track by与普通in循环区别
2015-08-17 09:56
288 查看
<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 itemsis equivalent to
item 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>
相关文章推荐
- 真的不能这么堕落了
- window下的homestead部署
- DBNULL与null的区别
- iOS 9之WatchKit for WatchOS 2
- 【老钱说图表第一季】---- 矩形树图
- C#实现将DataTable内容输出到Excel表格的方法
- Github上传本地代码详解
- 【老钱说图表第一季】----气泡图
- Nginx服务器搭建反向代理全攻略
- javaweb学习总结——数据库连接池
- wpf 把RGB转换为背景色的方法
- 霍纳法则在多项式求值中的应用
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- Sharepoint 2013 列表使用JS Link
- 引入代码后,在@override报错
- 剑指offer——面试题23:从上往下打印二叉树(树的递归创建,广度优先搜索,队列)
- Linux Shell统计一个目录下每种文件类型数量
- DevExpress v15.1:WPF控件升级(一)
- Big Event in HDU
- 给OpenStack扩展自定义功能