最近用ElementUI写一个表单的时候,新增和修改用了同一个表单。那么修改的时候就会有个回填数据,在关闭表单之后需要被清除。我用了this.$refs.addForm.resetFields();
,然而关闭表单之后,我列表里的对应修改项的这一条数据也被清空了。原来这是因为JS浅拷贝的问题。
我的列表数据是tableData
,表单数据用的是addForm
,当我把表单数据赋值给列表项时,用的是:
1 | this.$set(this.tableData,this.index,this.addForm); |
这就导致了我把addForm
的地址赋给了tableData
中对应索引的数据项,那么当我用
1 | this.$refs.addForm.resetFields(); |
清空表单的时候,列表的数据项也被清空了。
正确的方法是使用解构:
1 | this.$set(this.tableData,this.index,{...this.addForm}); |
问题就解决了。