vue中element-ui新增/更新弹框复用,在close时表单重置失败

vue中element-ui新增/更新弹框复用,在close时表单重置失败_第1张图片
vue中element-ui新增/更新弹框复用,在close时表单重置失败_第2张图片
问题描述:在el-dialog的close关闭事件中,使用了element-ui中表单重置方法this.$refs[formName].resetFields() ,代码:

close(formName) {
      this.$refs[formName].resetFields()
    }

但如上图,在刚进入页面后先点击编辑按钮(此时表单被赋值)后关闭弹框,再点击新建按钮时,弹框内的表单中都显示了值(一开始以为重置表单失败)。
原因:
(1)resetFields()只是重置为初始值
(2)这个初始值是在form的生命周期函数mounted被调用的时候赋值上去的
(3)所以在表单的mounted之前,如果给formData赋值了,那么后面调用resetFields()方法的时候,formData的值都不会变成空字符串。
解决办法
利用this.$nextTick()将赋值操作放到dom渲染结束之后,示例代码:

// 获取单条标签信息
    async requestTagDetail(id) {
      const res = await getTagDetail(id)
      if (res.success) {
        this.dialogVisible = true
        this.$nextTick(() => {
          this.editForm.id = res.data.id
          this.editForm.name = res.data.name
          this.editForm.type = res.data.type_name
          this.editForm.status = res.data.status
          this.editForm.desc = res.data.desc
        }
        )
      }
    }

你可能感兴趣的:(vue中element-ui新增/更新弹框复用,在close时表单重置失败)