美文网首页2019.11.25
vue A对象赋值给B对象,修改B属性会影响到A问题

vue A对象赋值给B对象,修改B属性会影响到A问题

作者: echo三文鱼 | 来源:发表于2018-08-03 17:43 被阅读0次

页面中有一个需要修改个人信息,但是vue里面的v-model是双向绑定,在我修改的时候,原始的引用该数据的地方也会随之更改,但其实这时候还未提交数据库,如果用户修改一半,点击取消,会存在页面修改过来,但是数据库没更新,刷新之后又恢复原来的值。

思路:用一个中间对象过渡一下,所以命名一个新的对象,这个对象和原始的个人信息是一样的内容,只是名字不一样,但是我在赋值之后发现,修改中间对象的属性值,原始对象也会更改,原来是vue的对象赋值,this.A = this.B,没有进行深层赋值,只是把this.A的地址指向了与this.B相同的地址,所有对于A的修改会影响到B。

解决:解决相互影响的思路是在this.A必须是新建的一个对象,这样才能保证不被指向同一地址,属性修改不会相互影响。

解决方式:     this.A=JSON.parse(JSON.stringify(this.B));

将对象转成字符串剔除对象属性后,再转换成对象赋值,这样能解决指向相同地址修改会相互影响的问题。

(引用https://blog.csdn.net/Yahets_Lee/article/details/80755347---原始作者)

相关文章

  • vue A对象赋值给B对象,修改B属性会影响到A问题

    页面中有一个需要修改个人信息,但是vue里面的v-model是双向绑定,在我修改的时候,原始的引用该数据的地方也会...

  • JAVA设计模式:原型模式与拷贝

    深拷贝与浅拷贝 浅拷贝:对象A进行赋值操作得到对象B,这就是浅拷贝,修改对象A的属性会影响到B的属性 深拷贝:深拷...

  • JavaScript浅析 -- 可变对象和不可变对象

    一、可变对象 把对象a赋值给对象b,更改对象b的属性值,被引用的对象a也随之改变,这就是可变对象。 为啥会这样呢?...

  • 5.React知识点集合

    可变对象 把对象a赋值给对象b,更改对象b的属性值,被引用的对象a也随之改变,这就是可变对象。 为啥会这样呢?其他...

  • JS深浅拷贝方法分享

    稍微有点js对象拷贝经验的朋友都知道,直接将对象A赋值给对象B,然后修改对象B中的某个值,对象A中对应的那个值也会...

  • 深拷贝浅拷贝

    引用数据类型(按引用访问):object、Array、function例如:A对象赋值给B对象深拷贝:修改对象B不...

  • 对象的浅层克隆和深层克隆

    浅层克隆:将a对象里的所有属性赋给一个b的空对象,若a对象中存在引用值,则克隆后修改b中的引用值,a也会跟着修改,...

  • 关于js赋值与引用

    创建了一个对象a;let a={'a':5;};把a赋值给新建的b对象;let b=a;//此时b对象引用了a对象...

  • 解构赋值

    多种解构赋值 1.解构赋值对象 let {a,b}={a:1,b:2} //a=1,b=2,//属性一致 let ...

  • Vue-Element之form表单重置

    正确写法 将完整的对象赋值给目标变量,而后再依据条件修改属性值先定义对象,后给对象添加属性会导致对象的属性读取不到...

网友评论

    本文标题:vue A对象赋值给B对象,修改B属性会影响到A问题

    本文链接:https://www.haomeiwen.com/subject/bgduvftx.html