弹窗嵌套表单是一个很常见的操作,并且一般这种弹窗表单都兼顾新增和修改两种功能,无非是打开表单数据为空和数据赋值的区别,一个很常见的问题是关闭弹窗怎么让里面的表单清空。
一、注意点击修改时候对象数据的赋值
if(val === 'edit') {// 编辑this.dialogFormData = JSON.parse(JSON.stringify(scope.row));this.dialogVisible = true;
}
这里的scope.row是从表格拿到的数据,对象的赋值一定要进行深拷贝,不然清空会出问题,如果是浅拷贝的话,表单数据清空会造成表格对应数据也被清空了,因为浅拷贝是地址的拷贝。
二、给弹窗设置关闭事件
closeDialog() {this.$refs.dialogForm.resetFields();// 清理表单数据for(let key in this.dialogFormData) {this.dialogFormData[key] = "";}
}
给弹窗加上@closed="closeDialog"事件,用this.$refs去获取到对应的表单,resetFields重置表单数据,这一步就已经能完成新增表单的数据清空了,for循环是让修改表单的数据重置。