美文网首页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问题

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