基于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 相关文章推荐
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
May 07 Javascript
jquery中push()的用法(数组添加元素)
Nov 25 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
JS搜狐面试题分析
Dec 16 Javascript
webpack入门必知必会
Jan 16 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
Vue ElementUI之Form表单验证遇到的问题
Aug 21 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
JS判断用户用的哪个浏览器实例详解
Oct 09 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
JS实现关闭小广告特效
Jan 29 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
PHP伪造referer实例代码
2008/09/20 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
vue之延时刷新实例
2019/11/14 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
python实现rsa加密实例详解
2017/07/19 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
东方电视购物:东方CJ
2016/10/12 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
老师对学生的寄语
2014/04/09 职场文书
总经理任命书范本
2014/06/05 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
毕业设计致谢语
2015/05/14 职场文书
老人与海读书笔记
2015/06/26 职场文书
联村联户简报
2015/07/21 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书