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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
Javascript非构造函数的继承
Apr 27 Javascript
深入分析javascript中console命令
Aug 14 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
解决vue无法设置滚动位置的问题
Oct 07 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
Vue动态面包屑功能的实现方法
Jul 01 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php笔记之:AOP的应用
2013/04/24 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
小程序实现密码输入框
2020/11/16 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Python遍历目录中的所有文件的方法
2016/07/08 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
学习党课思想汇报
2013/12/29 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
事业单位鉴定材料
2014/05/25 职场文书
经销商年会策划方案
2014/05/29 职场文书
海洋天堂观后感
2015/06/05 职场文书
房产证明范本
2015/06/19 职场文书
欠条样本
2015/07/03 职场文书