基于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 相关文章推荐
解决jquery .ajax 在IE下卡死问题的解决方法
Oct 26 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 Javascript
jQuery实现高亮显示网页关键词的方法
Aug 07 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
AngularJS 让人爱不释手的八种功能
Mar 23 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
通过构造函数实例化对象的方法
Jun 28 Javascript
Electron中实现大文件上传和断点续传功能
Oct 28 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
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时的知识积累总结
2013/06/07 PHP
解析PHP提交后跳转
2013/06/23 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
php函数连续调用实例分析
2015/07/30 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
javascript面向对象程序设计(一)
2015/01/29 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python逆序打印各位数字的方法
2018/06/25 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
终端业务员岗位职责
2013/11/27 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
新教师个人工作总结
2015/02/06 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python