基于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 各种网页尺寸判断实例方法
Apr 18 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
JS闭包用法实例分析
Mar 27 Javascript
详解webpack进阶之插件篇
Jul 06 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
Oct 08 Javascript
使用ECharts实现状态区间图
Oct 25 Javascript
JavaScript实现随机点名器
Mar 25 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从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
React简单介绍
2017/05/24 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
react以create-react-app为基础创建项目
2018/03/14 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python添加菜单图文讲解
2019/06/04 Python
10张动图学会python循环与递归问题
2021/02/06 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
动态密码技术
2012/10/18 面试题
实习护士自我鉴定
2013/10/13 职场文书
文秘人员工作职责
2014/01/31 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Redis可视化客户端小结
2021/06/10 Redis
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server