问题场景:

const addOptions = {singleOrComplex,totalNum: this.smallTotalPrice,selectList: this.purchaseLotter,smallTotalPrice: this.smallTotalPrice * 2
}
this.selectSucLotter.push(addOptions)

addOptions中的红框内容为全局的变量,我们需要往this.selectSucLotter中添加addOptions,且需要this.selectSucLotter中的值不随着addOptions中红框内的变量改变而改变。如果我们直接写this.selectSucLotter.push(addOptions),此时当我们修改红框中的内容时,this.selectSucLotter的值也会随之发生改变。解决之前大家先来看一下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中,如果多个组件引用了同一个对象作为数据,那么当其中一个组件改动对象数据时,其他对象的数据也会同步改动。

解决方法:

let addOptions = {singleOrComplex,totalNum: this.smallTotalPrice,selectList: this.purchaseLotter,smallTotalPrice: this.smallTotalPrice * 2
}
addOptions = JSON.parse(JSON.stringify(addOptions))
this.selectSucLotter.push(addOptions)

  

转载于:https://www.cnblogs.com/gxsyj/p/9767956.html

VUE中让由全局变量添加生成的新数组不随全局变量的变化而变化相关推荐

  1. 数组[Java](除去一个数组中的某个值并生成一个新数组)

    ** 数组 **[Java](除去一个数组中的某个值并生成一个新数组) 例如:现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ; ...

  2. vue中可编辑div添加@功能

    简介 1.有默认值情况下,光标自动定位到最后 2.按@键,或者@+shift组合键,可添加被@姓名 3.可整体删除@姓名 4.在光标位置插入指定html元素 如图所示 源码(复制另存txt,修改.ht ...

  3. 对以下学员随机排序,生成一个新数组:var arr = [“鹿晗“,“王俊凯“,“蔡徐坤“,“彭于晏“,“周杰伦“,“刘德华“,“赵本山“]

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  4. Java黑皮书课后题第7章:*7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置。改写方法将参数中传递的数组倒置,并返回该数组。编写一个测试程序,输入10个数字,倒置它们并显示

    7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置.改写方法将参数中传递的数组倒置,并返回该数组.编写一个测试程序,输入10个数字,倒置它们并显示 题目 题目描述 破题 代码 ...

  5. vue中按ctrl原页面锁定打开新页面

    可以通过vuex 或者 写个公共文件实现 vuex 实现思路 1.监听键盘按下事件 2.如果按下的按钮为ctrl, 就修改状态为true, 键盘抬起或者按键不对 状态都为false 3.需要监听所有的 ...

  6. php 多维素组添加下级,php中如何将元素添加到多维数组

    多维数组是指含有数组元素的数组,那么如何将元素添加到多维数组中呢?本篇文章就来给大家介绍一下php中将元素添加到多维数组的方法. 多维数组写法如下:$multi_dimensional_array = ...

  7. php多维数组添加元素,PHP中如何将元素添加到多维数组

    多维数组是指含有数组元素的数组,那么如何将元素添加到多维数组中呢?本篇文章就来给大家介绍一下php中将元素添加到多维数组的方法. 多维数组写法如下: $multi_dimensional_array ...

  8. vue中给高德地图添加地图名片

    第一步搜索高德地图开发平台注册开发者账号 第二步在vue-cli项目中下载高德地图插件 命令如下 npm i @amap/amap-jsapi-loader --save 第三步在 高德地图开发平台首 ...

  9. vue中如何使用canvas循环生成多张海报?

    一. 需求背景 长按分享图片,图片中含有自己分享链接生成的二维码,需要把二维码和背景图合成一张海报,项目需求是循环生成多张海报 二. canvas画布的生成条件 要生成画布的html元素不能是隐藏状态 ...

最新文章

  1. Qt 清空QPixMap
  2. MTK 修改后置Camera方向/镜像 Patch
  3. REVERSE-PRACTICE-BUUCTF-22
  4. 论文浅尝 | 利用问题生成提升知识图谱问答
  5. 贪心——跳跃游戏(Leetcode 55)
  6. docker部署mysql项目_Docker部署项目步骤
  7. 刘敏华:2013年网络营销行业展望
  8. 【Oracle】三种表连接方式
  9. 深入V8引擎-写在前面
  10. CentOS 6.5 端口转发
  11. 【模式识别-北理工】02模式识别算法体系
  12. 浅谈安全攻防场景下面的安全检测
  13. Centos7 日志查看工具journalctl 使用
  14. python分析微博数据中心_数据分析如何驱动社交媒体营运
  15. PB级数据实时分析,ClickHouse到底有多彪悍?
  16. 软件技术java开发方向,22年最新
  17. IDC企业为何热衷进军宽带接入网领域?
  18. .net程序员的iPhone开发-MonoTouch
  19. 简单的不放回抽样matlab代码实现
  20. 多媒体计算机教学硬件技术,多媒体计算机硬件教程

热门文章

  1. springcloud基于ribbon的canary路由方案
  2. 发现一个工具,可以清除 xp win7 用户密码,在PE下运行
  3. 我的Linux生涯之文件链接
  4. svn中提示”Files 的值 .mine 无效” 的解决方案
  5. .NET托管内存类应用的内存泄漏分析和诊断
  6. 云平台设计系统,助力业务快速开发
  7. webpy + nginx + fastcgi 构建python应用
  8. 《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.11. Tcl-8.6.3...
  9. Failed to load JavaHL Library(windows和mac)
  10. Cacti部署及常用插件安装(2)