基于element-ui对话框el-dialog初始化的校验问题解决


Posted in Javascript onSeptember 11, 2020

不刷新页面重新打开el-dialog时,如果我们绑定了rules或者某个值需要required,它总会自动校验。

查看了多个博文,发现常用的有两种解决方法(下列方法都可以在其他博文查看,不再细写,如有需要请自行查询):

1.给dialog套上v-if ;

2.在关闭dialog时,监听关闭回调,清除校验。

我在自己的项目里使用了上述两种方法,都不太好用,自己琢磨出了另一种方法:

<el-dialog @open="openDialog()">

</el-dialog>

调用dialog打开的回调

methods:
 
openDialog(){
  this.$nextTick(() => {
    this.$refs.dataForm.clearValidate();
  })
}

初始化dialog时, 拿到变化后的dom, 进行清除校验

补充知识:Cannot read property 'resetFields' of undefined 问题及引申

问题描述: 使用element开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog>

绑定了数据data里的commentForm对象

为了在新增弹出框清空表单, 使用了this.$refs[formName].resetFields()

每次第一次点击新增显示弹出框,都会报错

"[Vue warn]: Error in event handler for "click": "TypeError: Cannot read property 'resetFields' of undefined""

问题原因:

mouted加载table数据以后,隐藏的弹出框并没有编译渲染进dom里面。

所以@click="dialogFormVisible = true;resetForm('dlgForm')"click弹出的时候$refs并没有获取到dom元素导致 'resetFields' of undefined

解决方法:

1、($nextTick dom下一次更新之后)

resetForm(formName) {
        this.$nextTick(()=>{
          this.$refs[formName].resetFields();
        })        
      },

2、(如果是第一次就点击新增就没必要reset, 根据元素undefined判断)

if (this.$refs[formName] !== undefined) {
          this.$refs[formName].resetFields();
        }

注意事项:对DOM一系列的js操作最好都要放进Vue.nextTick()的回调函数中

以上这篇基于element-ui对话框el-dialog初始化的校验问题解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
Javascript注入技巧
Jun 22 Javascript
javascript 浏览器检测代码精简版
Mar 04 Javascript
Javascript获取CSS伪元素属性的实现代码
Sep 28 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
jQuery使用drag效果实现自由拖拽div
Jun 11 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
Sep 07 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
vue界面发送表情的实现代码
Sep 11 #Javascript
在vue中配置不同的代理同时访问不同的后台操作
Sep 11 #Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 #Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 #Javascript
关于ES6尾调用优化的使用
Sep 11 #Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 #Javascript
Vue项目开发常见问题和解决方案总结
Sep 11 #Javascript
You might like
wordpress之wp-settings.php
2007/08/17 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
Python计算程序运行时间的方法
2014/12/13 Python
Python实现感知机(PLA)算法
2017/12/20 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
毕业生自荐书模版
2014/01/04 职场文书
2014学年自我鉴定
2014/02/23 职场文书
高中语文课后反思
2014/04/27 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
消防演习通知
2015/04/25 职场文书
导游带团欢迎词
2015/09/30 职场文书
会计做账心得体会
2016/01/22 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python