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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
超级退弹代码
Jul 07 Javascript
javascript字母大小写转换的4个函数详解
May 09 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
angularJS深拷贝详解
Mar 23 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
Vue 解决多级动态面包屑导航的问题
Nov 04 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 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+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
Django开发中的日志输出的方法
2018/07/02 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Django实现文件上传下载
2019/10/06 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
Python urllib2运行过程原理解析
2020/06/04 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
医学生临床实习自我评价
2014/03/07 职场文书
合伙协议书
2014/04/23 职场文书
记账会计岗位职责
2014/06/16 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android