今天遇到点坑,做资料编辑的时候,发现取到表格行数据后,赋值到视图显示出来,发现和表格同步绑定了。直接就改变了表格本身的内容。
一般合理做法都是点击编辑的时候,获取到编辑行数据,然后赋值到编辑视图渲染出来,同时赋值给新的对象,提交的时候提交新对象。
/**
* 表单模态框编辑
*/
showEditDialog(index,row) {
console.log('当前编辑行数据',row);
this.editForm = row; //为毛这里是赋值,但是却是和表格当前row是绑定状态?
this.editDealogVisible = true;
},
上面row已经赋值了新对象editForm,视图也是渲染了editForm对象数据,但是修改editForm时候,居然列表对象也跟着边了。后来发现要单个属性赋值。上面代码改成如下即可解决。
/**
* 表单模态框编辑
*/
showEditDialog(index,row) {
console.log('当前编辑行数据',row);
this.editForm.username = row.username; //只有这样赋值才不会影响到row本身变化,否则回同步
this.editDealogVisible = true;
},
上面方法虽然解决了,但明显不够合理,因为我们每个页面参数都不一样,不可能每个界面都去写一次参数,必须要动态,查了下就有了更合理的解决方案,因为学后端,js渣渣,所以具体理也不懂,只知道这样可以解决问题了。
/**
* 表单模态框编辑
*/
showEditDialog(index,row) {
console.log('当前编辑行数据',row);
this.editForm = JSON.parse(JSON.stringify(row));
this.editDealogVisible = true;
},
为什么一定要序列化才能呢。不懂,懂的请讲解下。谢谢