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使用手册之三 CSS操作
Mar 24 Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 Javascript
动态改变div的z-index属性的简单实例
Aug 08 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
jQuery 中的 DOM 操作
Apr 26 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
jQuery 连续列表实现代码
2009/12/21 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
javascript时区函数介绍
2012/09/14 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
JS array数组检测方式解析
2020/05/19 Javascript
js实现扫雷源代码
2020/11/27 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python元字符的用法实例解析
2018/01/17 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
python模块内置属性概念及实例
2021/02/18 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
Delphi笔试题
2016/11/14 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
体操比赛口号
2014/06/10 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书