问题描述
使用element UI弹窗编辑表单后,点击关闭弹窗调用resetFields()方法重置表单初始值;然后打开新增表单,发现表单回显了上次编辑的值,也就是resetFields()重置表单失效。
解决方法
this.$nextTick(() => { // 这里开始赋值,例如this.form.xxx = xxx; })
原因分析
编辑表单时,第一次打开dialog的时候因为要回显数据,所以给表单绑定的model赋值了,这时候这个model的初始值就变成了你赋值的值(注意这个初始值==赋值的值),当关闭dialog调用resetFields的时候,会将model对应的每个值重置到初始值,此时的初始值就是你编辑时赋值的那个值,而不是在data里声明的初始值。所以需要等dialog已经初始化mounted之后再给model赋值,解决方式:this.$nextTick(() => { // 这里开始赋值 this.form.xxx = xxx; })