基于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 相关文章推荐
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
JavaScript中判断函数是new还是()调用的区别说明
Apr 07 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
Nov 02 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
ES6学习教程之模板字符串详解
Oct 09 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
Vue页面渲染中key的应用实例教程
Jan 12 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入门之连接mysql数据库的一个类
2012/04/21 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
python 数据加密代码
2008/12/24 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Sanic框架配置操作分析
2018/07/17 Python
老生常谈python中的重载
2018/11/11 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Python通过format函数格式化显示值
2020/10/17 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
我的理想演讲稿
2014/04/30 职场文书
导师就业推荐信范文
2014/05/22 职场文书
就业协议书
2014/09/12 职场文书
婚前协议书标准版
2014/10/19 职场文书
2014年教师工作总结
2014/11/10 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
民事申诉状范本
2015/05/20 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js