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 相关文章推荐
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
js读取被点击次数的简单实例(从数据库中读取)
Mar 07 Javascript
JavaScript数值数组排序示例分享
May 27 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
vue-router传参用法详解
Jan 19 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
是否存在第一台收音机的说法
2021/03/01 无线电
php中数据的批量导入(csv文件)
2006/10/09 PHP
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
学习php笔记 字符串处理
2010/10/19 PHP
PHP多进程编程实例
2014/10/15 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python基础教程之字典操作详解
2014/03/25 Python
详解python配置虚拟环境
2019/04/08 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
酒店出纳岗位职责
2013/12/29 职场文书
水电工岗位职责
2014/02/12 职场文书
民事授权委托书范文
2014/08/02 职场文书
医院合作协议书
2014/08/19 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电