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 相关文章推荐
另类调用flash无须激活的方法
Dec 27 Javascript
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 Javascript
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
jquery+css实现下拉列表功能
Sep 03 jQuery
基于vue.js中事件修饰符.self的用法(详解)
Feb 23 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
关于React动态加载路由处理的相关问题
Jan 07 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
如何开发一个虚拟域名系统
2006/10/09 PHP
MySQL授权问题总结
2007/05/06 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php类常量的使用详解
2013/06/08 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
鼠标图片振动代码
2006/07/06 Javascript
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
浅析Python 序列化与反序列化
2020/08/05 Python
单位领导证婚词
2014/01/14 职场文书
文明演讲稿范文
2014/05/12 职场文书
股指期货心得体会
2014/09/10 职场文书
研究生导师推荐信
2015/03/25 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
2019广播稿怎么写
2019/04/17 职场文书
python实现简单的聊天小程序
2021/07/07 Python