Vue js组件中引入Vue组件

用Vue一年多但是对Vue一些原理了解还是不够,研究这个问题花了一天,记录一下。

需求

需求:要实现地图上弹窗,弹窗内嵌入Vue组件,组件调用视频播放插件。
难点:要改造封装好的弹窗js组件,引入Vue组件,之前调用组件都是直接在.vue文件里import进来,写进components里就OK,可是放到js文件里还是第一次遇到。搜索了半天终于受到启发,可以用 Vue.component ,可是找到以后还是研究了半天写法才成功引入。

关键代码

在前面引入Vue组件

import videoPreview from "@/view/videoPreview"

创建组件实例

    constructor(map, {}) {
        this.component = Vue.component('video-preview', videoPreview)
        this.createComponent(this.instance)
    }
    createComponent(){ //创建组件实例但暂不挂载
        const component = Vue.component('video-preview')
        const instance = this.instance = new component()
        instance._props.videoData = {} //这里相当于平时 <videoPreview :videoData="videoData"></videoPreview> 写法里传值videoData
    }

创建html

        this.parent = document.createElement('div')
        this.parent.innerHTML = `
          <div class="pop-container">

          </div>`
        this.container = this.parent.querySelector('.pop-container')
        this.container.innerHTML = `
          <div class="videoWindow">
            <div id="video-preview"></div>
          </div>`

需要用到弹窗和组件的时候再挂载(如果需要反复调用,仅需挂载一次,否则会重复创建(需要显示视频播放插件时问题尤其明显))

this.instance.$mount("#video-preview")

调用组件内方法(假设组件内有方法 showPlugin()

this.instance.showPlugin()

参考

posted @   宇宙野牛  阅读(3123)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示