AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题


Posted in Javascript onJanuary 21, 2017

本文实例讲述了AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题。分享给大家供大家参考,具体如下:

我们可以使用ng-repeat指令遍历一个JavaScript数组,当数组中有重复元素的时候,AngularJS会报错:

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: user in users, Duplicate key: number:1。下面的代码就会报错:

<html>
 <head>
  <script src="angular-1.2.2/angular.js"></script>
  <script>
     function rootController($scope,$rootScope,$injector)
     {
      $scope.dataList = [1,2,1];
     }
  </script>
 </head>
 <body ng-app ng-controller="rootController">
    <div ng-repeat="data in dataList">
      {{data}}
    </div>
 </body>
</html>

这是因为ng-Repeat不允许collection中存在两个相同Id的对象。

For example: item in items is 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表达式。

// 业务上自己生成唯一的id
item in items track by item.id
//或者直接拿循环的索引变量$index来用
item in items track by $index

如果是javascript对象类型数据,那么就算内容一摸一样,ng-repeat也不会认为这是相同的对象。如果将上面的代码中dataList,那么是不会报错的。比如$scope.dataList = [{"age":10},{"age":10}];

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
Javascript 写的简单进度条控件
Jan 22 Javascript
jQuery 学习 几种常用方法
Jun 11 Javascript
jquery 模式对话框终极版实现代码
Sep 28 Javascript
JQuery 遮罩层实现(mask)实现代码
Jan 09 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
使用jquery清空、复位整个输入域
Apr 02 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
vue的路由映射问题及解决方案
Oct 14 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 Javascript
微信小程序 九宫格实例代码
Jan 21 #Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 #Javascript
巧用canvas
Jan 21 #Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 #Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 #Javascript
微信小程序 swiper制作tab切换实现附源码
Jan 21 #Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 #Javascript
You might like
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
python sys模块sys.path使用方法示例
2013/12/04 Python
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
简单解析Django框架中的表单验证
2015/07/17 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Ibatis如何使用动态表名
2015/07/12 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
党员创先争优公开承诺书
2014/03/28 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python