ElementUI form表单在dialog中,先点了编辑后添加,重置表单无效

在用ElementUI做动态表单时,数据的修改都是打开dialog(子组件)中进行操作的,但是在修改数据时,正常来说可以直接调用 this.$refs[str].resetFields() 直接清空,但是这里会出现一个问题:

form表单的重置是以第一次打开的数据作为重置标准,如果先打开的是更新,那么重置之后以第一次更新的数据作为标准; 
Dialog 中的内容是懒加载的,目前 edit (更新)方法的写法导致 Form 刚加载出来时值就已经是新的了,所以 resetFields 也只能回到新值
 

解决方案:

1、利用v-if的特性,进行form的销毁和重建,强行让每一次改操作拿到的数据为父组件传过来的初始值

2、让表单先渲染出来,再对表单对象进行赋值

if(type==1){//添加
     this.payfee.fee = '';
     this.payfee.effectiveTime = '';
     this.title = '添加';  
}else{//编辑
     //对form赋值   
     this.title = '编辑';
     this.$nextTick(() => {
         this.payfee.fee = row.price;
         this.rowid = row.id;
    })
}

vm.$nextTick([callback]):

将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。

你可能感兴趣的:(web前端,elementui)