vue 数组和对象不能直接赋值情况和解决方法(推荐)


Posted in Javascript onOctober 25, 2017

Vue 不能检测以下变动的数组:

当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue

当你修改数组的长度时,例如:vm.items.length = newLength

当第一种情况需求时,可以使用this.$set(this.arr,index,newVal)

Vue 不能检测对象属性的添加或删除:

可以使用this.$set(this.person,'age',12)

     当需要添加多个对象时,Object.assign({},this.person,{age:12,name:'wee'})

PS:Vue实现对数组、对象的深拷贝、复制

当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝),如下

数组:

var a = [1,2,3];
var b = a;
b.push(4); // b中添加了一个4
alert(a); // a变成了[1,2,3,4]

对象:

var obj = {a:10};
var obj2 = obj;
obj2.a = 20; // obj2.a改变了,
alert(obj.a); // 20,obj的a跟着改变

这就是由于对象类型直接赋值,只是将引用指向同一个地址,导致修改了obj会导致obj2也被修改

所以在vue中,如果多个组件引用了同一个对象作为数据,那么当其中一个组件改动对象数据时,其他对象的数据也会同步改动。有这种双向绑定的需要的话,那么自然是最好的,但如果不需要这种绑定而希望各组件的对象数据之间相互独立,即是互不关联的对象副本的话,可以用下面的方法解决

computed: { 
   data: function () { 
     var obj={}; 
     obj=JSON.parse(JSON.stringify(this.templateData)); //this.templateData是父组件传递的对象 
     return obj 
  } 
 }

总结

以上所述是小编给大家介绍的vue 数组和对象不能直接赋值情况和解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 数组排序函数
Aug 20 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
Nov 02 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
Dec 26 Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 Javascript
node.js中的console.trace方法使用说明
Dec 09 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
php register_shutdown_function函数详解
Jul 23 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
vue 实现剪裁图片并上传服务器功能
Mar 01 Javascript
Vue的轮播图组件实现方法
Mar 03 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
JS使用tofixed与round处理数据四舍五入的区别
Oct 25 #Javascript
javascript计算对象长度的方法
Oct 25 #Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 #Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 #Javascript
详解vue 组件之间使用eventbus传值
Oct 25 #Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 #Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 #Javascript
You might like
晶体管单管来复再生式收音机
2021/03/02 无线电
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
php unlink()函数使用教程
2018/07/12 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python numpy数组中的复制知识解析
2020/02/03 Python
python初步实现word2vec操作
2020/06/09 Python
CK美国官网:Calvin Klein
2016/08/26 全球购物
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
《夸父追日》教学反思
2014/02/26 职场文书
模特大赛策划方案
2014/05/28 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
高中校园广播稿
2014/10/21 职场文书
售房协议书范本2014
2014/10/23 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书