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 相关文章推荐
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
JavaScript prototype 使用介绍
Aug 29 Javascript
js正则表达exec与match的区别说明
Jan 29 Javascript
使用jQuery管理选择结果
Jan 20 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
微信小程序 slider 详解及实例代码
Jan 10 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Apr 20 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中{}大括号是什么意思
2013/12/01 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
动态调用css文件——jquery的应用
2007/02/20 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
vue的for循环使用方法
2019/02/12 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
python日志模块logbook使用方法
2019/09/19 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python通过字典映射函数实现switch
2020/11/06 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
国际政治学专业推荐信
2014/09/26 职场文书
践行三严三实心得体会
2014/10/13 职场文书
小学工作总结2015
2015/05/04 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
js实现上传图片到服务器
2021/04/11 Javascript
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server