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 相关文章推荐
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
Aug 27 Javascript
全面解析Bootstrap布局组件应用
Feb 22 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
javascript中的try catch异常捕获机制用法分析
Dec 14 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
Jan 12 Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 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
杏林同学录(九)
2006/10/09 PHP
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php的socket编程详解
2016/11/20 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
JS基础之undefined与null的区别分析
2011/08/08 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
js实现随机点名小功能
2017/08/17 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
深入理解Promise.all
2018/08/08 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
python检测lvs real server状态
2014/01/22 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python实现翻转数组功能示例
2018/01/12 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
python实现吃苹果小游戏
2020/03/21 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
python不同版本的_new_不同点总结
2020/12/09 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
土木工程专业推荐信
2014/02/19 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
求职自我评价范文
2015/03/09 职场文书
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技