基于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结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
Feb 18 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
JavaScript 函数replace深入了解
Mar 14 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
React组件设计模式之组合组件应用实例分析
Apr 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网站地图生成类示例
2014/01/13 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
python使用mysql的两种使用方式
2018/03/07 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
python中如何使用虚拟环境
2020/10/14 Python
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
读书心得体会
2013/12/28 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
小学语文教学随笔
2015/08/14 职场文书
《迟到》教学反思
2016/02/24 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书