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 相关文章推荐
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
jQuery AJAX回调函数this指向问题
Feb 08 Javascript
JavaScript 高效运行代码分析
Mar 18 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
简介JavaScript中toUpperCase()方法的使用
Jun 06 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
vue组件开发props验证的实现
Feb 12 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
js实现简单抽奖功能
Nov 24 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 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 如何向 MySQL 发送数据
2006/10/09 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
ThinkPHP安装和设置
2015/07/27 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
python实现各进制转换的总结大全
2017/06/18 Python
TensorFlow实现Logistic回归
2018/09/07 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
医药个人求职信范文
2014/01/29 职场文书
职工运动会邀请函
2014/02/02 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
安全生产年活动总结
2014/08/29 职场文书
邀请函样本
2015/02/02 职场文书
python blinker 信号库
2022/05/04 Python