[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方法

相关推荐
一颗烂土豆几秒前
🚀从 autofit 到 vfit:Vue 开发者该选哪个大屏适配工具?
前端·vue.js
z_mazin1 分钟前
逆向Sora 的 Web 接口包装成了标准的 OpenAI API 格式-系统架构
linux·运维·前端·爬虫·系统架构
CoolerWu2 分钟前
Trae Solo 实战指南:从"会用"到"用好"的协作方法论
前端·javascript
听风说图4 分钟前
Figma画布协议揭秘:组件实例的SymbolOverrides覆盖机制
前端·canvas
小杨前端6 分钟前
前端如何自己实现一个webpack的热更新?
前端
@大迁世界9 分钟前
02.CSS变量 (Variables)
前端·css
鹏多多11 分钟前
轻量+响应式!React瀑布流插件react-masonry-css的详细教程和案例
前端·javascript·react.js
Larry_Yanan13 分钟前
Qt线程使用(一)直接继承QThread类
开发语言·c++·qt·ui
用户3458482850515 分钟前
java中的tomicInteger/AtomicLong介绍
前端·后端
一颗宁檬不酸16 分钟前
Vue.js 初学者基础知识点总结 第一弹
前端·javascript·vue.js