element dialog 关闭 form 表单校验未清除的解决办法
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
免费下载资源
·
一、需求背景
点击表单提交按钮之后,在 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 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)