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实现划词标记+划词搜索功能
Mar 06 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
Apr 28 Javascript
js 调用父窗口的具体实现代码
Jul 15 Javascript
JS获取单击按钮单元格所在行的信息
Jun 17 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
jQuery代码性能优化的10种方法
Jun 21 Javascript
canvas时钟效果
Feb 16 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
微信小程序文字显示换行问题
Jul 28 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
动态规划之使用备忘录来改进Javascript函数
Apr 07 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
PHP安装全攻略:APACHE
2006/10/09 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python logging模块学习笔记
2014/05/24 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python结合API实现即时天气信息
2016/01/19 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
九年级科学教学反思
2014/01/29 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
八项规定整改方案
2014/10/01 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
技能培训通讯稿
2015/07/18 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS