vue-v-model 双向绑定-编辑弹框修改数据后页面数据跟着更改(取消弹框操作也已经被修改数据),利用 Object.assign解决对象引用同址问题

在做项目中经常会遇到table表格某行进行编辑。

当编辑表格行时弹出一个浮框,里面被赋值当前表格的各个元素。可以在此元素的基础上进行修改编辑操作。

一般浮框的输入项是用双向绑定v-model。

当点击编辑按钮时候把当前行的数据赋值给弹框内并渲染弹框数据。

这时候问题就容易出现了:浮框数据改变发现页面数据也跟着改变了。

如果只有确认按钮还能忍受,关键是数据已经改变,如果有取消编辑按钮,数据一样已经改变!

其实原因很简单,数据是obj类型,赋值操作的时候把地址给共同绑定了。

这也是一个js的基础问题,对象等赋值数据类型的值和址应用等知识点

解决方案很简单,利用js提供的Object.assign()对象方法。

Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

不会引用原地址。不会修改到原来的内容。

解决方法

在编辑按钮方法里,直接Object.assign({},row),这里的row是每行数据

你可能感兴趣的:(vue.js,javascript,前端)