在开发过程中新增/编辑/查看功能往往使用一个el-form,在新增完成时,执行 resetFields()方法(即:this.$refs[form].resetFields();),这样再次打开页面时,不会保留原来的数据,但是先执行编辑或者查看操作,执行resetFields()方法,再次打开新增时,会发现数据依然存在,感觉像是resetFields()方法没有起作用。
原因: resetFields() 是将表单项重置为初始值,而这个初始值是在 Vue mounted 时赋值上去的,如果在这之前对表单进行了赋值,则初始值会改变,那么后面调用 resetFields() 则不会生效(不会是定义时的空值)
方法1:将赋值操作定义在 this.$nextTick() 中(保证了初始值不被修改)
//赋值操作
operate(data) {
this.$nextTick(() => {
this.form = Object.assign({}, data);
})
},
方法2:使用vue中 this.$options.data() 可以重置vue组件中的data数据
//清空操作
closure() {
this.$refs.form.resetFields();
this.form = this.$options.data().form;
},