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 相关文章推荐
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
Jan 09 Javascript
利用javascript实现全部删或清空所选的操作
May 27 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
浅谈JS的基础类型与引用类型
Sep 13 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
vue组件实例解析
Jan 10 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
Feb 27 Javascript
js函数柯里化的方法和作用实例分析
Apr 11 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新手NOTICE错误常见解决方法
2011/12/07 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
django rest framework使用django-filter用法
2020/07/15 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Whistles官网:英国女装品牌
2020/08/14 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
什么是Rollback Segment
2013/04/22 面试题
八年级音乐教学反思
2014/01/09 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
长城的导游词
2015/01/30 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
JS Object构造函数之Object.freeze
2021/04/28 Javascript
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记