[element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案

问题描述

在没有进行任何操作的时候,使用

js 复制代码
this.$refs.xxxx 

无法获取el-dialog中的内部元素,这个问题会导致很多bug.

官方解释,在open事件回调中进行,但是open()是弹窗打开时候的会调,有可能在此处获取的时候,还没有渲染成功,导致依然获取不了。

1、可以通过定时器延时获取

html 复制代码
<el-dialog  @opened="openWebRtc()" >
    <!--子组件 -->
   <web-rtc ref="webrtc" v-show="showWebRtcVideo" :videoUrl="WebRtcVideoUrl"></web-rtc>
</el-dialog>
 
openWebRtc(){
   setTimeout(() => {
    this.$refs.webrtc.start();
  }, 0);
},

2、通过opend会调获取

html 复制代码
<el-dialog  @opened="openWebRtc()" >
    <!--子组件 -->
   <web-rtc ref="webrtc" v-show="showWebRtcVideo" :videoUrl="WebRtcVideoUrl"></web-rtc>
</el-dialog>
 
openWebRtc(){
   this.$refs.webrtc.start();
},

3、 强制加载dialog中的内容

使用下面的代码,就是将dialog强制加载一遍,这个因为速度快肉眼是看不见加载的过程的

js 复制代码
mounted() {
    this.updateInsertOpen = true //:visible.sync="open"
    this.$refs.updateInsertDialog.rendered = true //updateInsertDialog是dialog的ref;
    this.updateInsertOpen = false
  },

参考:
element-UI 组件 dialog 中 ref 获取不到的问题解决方案

vue中el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案 使用强制提前加载dialog方法

相关推荐
elangyipi1236 小时前
前端面试题:如何减少页面重绘跟重排
前端·面试·html
码界奇点6 小时前
基于Spring Boot和Vue.js的视频点播管理系统设计与实现
java·vue.js·spring boot·后端·spring·毕业设计·源代码管理
安当加密6 小时前
SYP 密码管理器:基于 UI 自动化的 CS 代填如何做到“安全可用”?
安全·ui·自动化
想学后端的前端工程师6 小时前
【前端安全防护实战指南:从XSS到CSRF全面防御】
前端·安全·xss
czlczl200209256 小时前
基于 Spring Boot 权限管理 RBAC 模型
前端·javascript·spring boot
未来之窗软件服务7 小时前
幽冥大陆(六十七) PHP5.x SSL 文字加密—东方仙盟古法结界
服务器·前端·ssl·仙盟创梦ide·东方仙盟
小北方城市网7 小时前
第 10 课:Node.js 后端企业级进阶 —— 任务管理系统后端优化与功能增强(续)
大数据·前端·vue.js·ai·性能优化·node.js
华仔啊7 小时前
JavaScript 有哪些数据类型?它们在内存里是怎么存的?
前端·javascript
我有一棵树7 小时前
淘宝 npm 镜像与 CDN 加速链路解析:不只是 Registry,更是分层静态加速架构
前端·架构·npm
zhousenshan7 小时前
vue3基础知识100问
前端·vue.js