elementUI form表单先点击编辑,再点击新增的话,上次遗留数据没有清空

html上只有必填项加prop校验了,没加校验的就不清空了?
但是加校验的把表格的数据也给清掉了

img

这个单看现象的话,问题如下:

  1. el-form的reset是通过prop去定位数据实现的,prop并非只与校验相关,是将item与form连接起来的纽带,非特殊情况下建议不要省略。
  2. 考虑到js的对象是引用数据类型,所以哪怕是通过参数等方式进行传递,传递的还是其引用,换言之,直接用参数或赋值将表格中的数据给表单的话,其实它俩是完全共用数据的,就会出现表单修改掉了表格中的值这样的现象。
    可以通过es6的解构赋值(其它拷贝方式也完全OK的)将数据进行传递实现数据的拷贝e.g:formData={...tableData},就不会有这种影响了

这里还有一个可能出现的问题(我在vue中遇到的):
先点击编辑,再点击新增的时候,resetFields()未生效。
原因如下:
resetFields()是将form表单的数据设置为初始值,而这个初始值是在form mounted生命周期被赋值上去的,
所以,在 form mounted之前,如果给form表单赋值了,那么后面调用resetFields()就会无效,因为form表单的初始值被覆盖了一遍;
解决方法如下:
在编辑那里的赋值操作外包一层nextTick,让这个赋值等一下、在mounted后进行,即可