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 相关文章推荐
jQuery live
May 15 Javascript
表单元素事件 (Form Element Events)
Jul 17 Javascript
jQuery中queue()方法用法实例
Dec 29 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
微信小程序 购物车简单实例
Oct 24 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
详解webpack require.ensure与require AMD的区别
Dec 13 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
通过实例了解Javascript柯里化流程
Mar 03 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
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
初学Javascript的一些总结
2008/11/03 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
生成二维码方法汇总
2014/12/26 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
教师求职信范文分享
2013/12/27 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
生物工程专业求职信
2014/09/03 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
违章停车检讨书
2014/10/21 职场文书
宿舍管理制度范本
2015/08/07 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
Pygame Event事件模块的详细示例
2021/11/17 Python