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 相关文章推荐
script的async属性以非阻塞的模式加载脚本
Jan 15 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
Angular实现图片裁剪工具ngImgCrop实践
Aug 17 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
jquery实现有过渡效果的tab切换
Jul 17 jQuery
微信小程序 九宫格实例代码
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
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php生成短网址示例
2014/05/05 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Python编写打字训练小程序
2019/09/26 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python selenium循环登陆网站的实现
2019/11/04 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
python如何对链表操作
2020/10/10 Python
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
六五普法规划实施方案
2014/03/21 职场文书
HR求职自荐信范文
2014/06/21 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js