一、需求背景

点击表单提交按钮之后,在 form 表单中有 prop 属性的 el-input 元素会参与字段的校验(有校验不为空的、长度不符合的、手机号格式等等),会出现如下图所示情况,当我们关闭dialog再打开时,发现校验的错误信息还保存在表格中,我们应该如何解决呢?

二、解决办法

思路分析:

出现这个问题之后,我们第一时间会在弹窗出现时使用  this.$refs["formName"].resetFields()【formName是给el-table ref名称】进行清除表单错误,但是此时会报错, 因为当前表单元素在dialog中还未刷新出来, this.$refs['accountForm'] 为 undefined

解决:

   1、使用 this.$nextTick(() => { ... })

// $nextTick 中注册的回调可以拿到 dom 元素
this.$nextTick(() => {
    this.$refs['accountForm'].resetFields()
})

我们会发现不起作用,还会报错,原因是因为刚打开dialog时,表单组件还未加载完成。

    2、第二种方法是在给dialog注册一个关闭事件,在dialog关闭的时候清除表单校验规则。

  <el-dialog
      :title="title"
      :visible.sync="accountFlag"
      align="center"
      width="40%"
      @close="$refs['accountForm'].resetFields()"
    >
</el-dialog>

备注:以下是ElementUI种对于该方法的介绍:

                                                                           图二 使用resetFields进行清除表单错误

GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45 7 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐