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 相关文章推荐
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
Apr 07 Javascript
js函数名与form表单元素同名冲突的问题
Mar 07 Javascript
JSONP原理及简单实现
Jun 08 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
Jan 08 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
JS实现商品橱窗特效
Jan 09 Javascript
分享一款超好用的JavaScript 打包压缩工具
Apr 26 Javascript
Vue深入理解插槽slot的使用
Aug 05 Vue.js
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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
PHP微信红包API接口
2015/12/05 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
利用aardio给python编写图形界面
2017/08/21 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
django教程如何自学
2020/07/31 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
四好少年事迹材料
2014/01/12 职场文书
授权委托书格式模板
2014/04/03 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
2014年工商所工作总结
2014/12/09 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
送给客户微信问候语!
2019/07/04 职场文书