AngularJS ng-repeat数组有重复值的解决方法


Posted in Javascript onOctober 23, 2016

前言

大家都知道默认在ng-repeat的时候每一个item都要保证是唯一的,否则console就会打出error告诉你哪个key/value是重复的。

如:

$scope.items = [
 'red',
 'blue',
 'yellow',
 'white',
 'blue'
];

这个数组blue就重复了,html这么遍历它

<li ng-repeat="item in items">{{ item }}</li>

控制台就会抛出一个错误:

AngularJS ng-repeat数组有重复值的解决方法

点击错误链接到Angular官网看详细错误,官网明确给出是因为值重复了:

Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: item in items, Duplicate key: string:blue, Duplicate value: blue

解决方法

这就纳闷了,正常的业务里数组有重复的值是很正常的,数组要硬要搞成唯一的ng-repeat才能遍历就白瞎了,继续往下看,发现官网给了一个解决的方案

<div ng-repeat="value in [4, 4] track by $index"></div>

于是按照这个方案改了一下

<li ng-repeat="item in items track by $index">{{ item }}</li>

刷新网页,内容被正常解析

AngularJS ng-repeat数组有重复值的解决方法

其实ng-repeat还是需要一个唯一的key,只不过你不track的话默认就是item本身,另外也只有在普通数据类型字符串,数字等才会出现这个问题,如果换成Object

$scope.items = [
 ['red'],
 ['blue'],
 ['yellow'],
 ['white'],
 ['blue']
];

html恢复为

<li ng-repeat="item in items">{{ item }}</li>

执行结果:

AngularJS ng-repeat数组有重复值的解决方法

不明白的童鞋那就自己看看下面的运算表达式,猜猜结果是什么,然后在浏览器的控制台试一试你的答案是否正确

[] === []

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
学习面向对象之面向对象的术语
Nov 30 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
Feb 03 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
Feb 16 Javascript
JS实现刷新父页面不弹出提示框的方法
Jun 22 Javascript
Node.js 日志处理模块log4js
Aug 28 Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 Javascript
web前端开发upload上传头像js示例代码
Oct 22 #Javascript
jQuery中$.ajax()方法参数解析
Oct 22 #Javascript
详解Javascript函数声明与递归调用
Oct 22 #Javascript
js中利用cookie实现记住密码功能
Aug 20 #Javascript
JavaScript实现页面无操作倒计时退出
Oct 22 #Javascript
微信开发 消息推送实现代码
Oct 21 #Javascript
微信和qq时间格式模板实例详解
Oct 21 #Javascript
You might like
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
js命名空间写法示例
2015/12/18 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
Python多进程机制实例详解
2015/07/02 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python logging模块的使用详解
2020/10/23 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
教师个人自我评价范文
2014/04/13 职场文书
实习生评语
2014/04/26 职场文书
本科应届生求职信
2014/08/05 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
中秋节祝酒词
2015/08/12 职场文书
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python