form resetFields没有清空的原因

2020-03-31  本文已影响0人  linqii
重置表单的必要条件:

1.表单加ref:

<el-form :model="query" ref="formRef"></el-form>

2.每个item加prop属性,需要和绑定数据的名称一致:

<el-form-item prop="name">
    <el-input v-model="query.name"></el-input>
 </el-form-item>

3.绑定点击事件中传入formRef:

<el-button @click="resetForm('formRef')">重置</el-button>

4.注册事件:

restForm(refname) {
   this.$refs[refname].resetFields()
}

如果还有没能清空的情况,需要注意一下表单是否有初始值或者是否在某个地方改变了初始值。重置的含义就是重置为初始值,根据文档显示,resetFields是对整个表单进行重置,将所有字段值重置为空并移除校验结果。但是实际上resetFields是清空validateMessage,然后把值重置成了上一次初始化的值。

如果你编辑时,第一次打开dialog的时候给表单绑定的model赋值了,这时候这个model的初始值就变成了你所赋值的值,所以resetFields的时候,会将model对应的每个值重置到初始值,这时候的初始值就是你编辑时赋值的那个值,而不是在data里声明的初始值,解决方式是,等dialog已经初始化mounted之后再给model赋值,也就是

this.$nextTick(() => { // 这里开始赋值 this.query.xxx = xxx; })
上一篇下一篇

猜你喜欢

热点阅读