在用ElementUI做动态表单时,数据的修改都是打开dialog(子组件)中进行操作的,但是在修改数据时,正常来说可以直接调用 this.$refs[str].resetFields() 直接清空,但是这里会出现一个问题:
form表单的重置是以第一次打开的数据作为重置标准,如果先打开的是更新,那么重置之后以第一次更新的数据作为标准;
Dialog 中的内容是懒加载的,目前 edit (更新)方法的写法导致 Form 刚加载出来时值就已经是新的了,所以 resetFields 也只能回到新值
解决办法就是在dialog上面加一个v-if;
<el-dialog :title="title"
:close-on-press-escape="false"
:close-on-click-modal="false"
:visible.sync="payfeeVisible"
v-if='payfeeVisible'
width="430px">
让表单先渲染出来,再对表单对象进行赋值(this.$nextTick)
这样就可以避免重置无效的效果;