请问如何实现动态挂载组件到body下?

来源:8-1 create-api 原理介绍

他门说这就是人生

2020-05-03

比如说我有个vue组件:

<template>
    <div class="loading">
        <img :src="imageSrc" alt="加载中" class="img">
    </div>
</template>

<script>
    export default {
        name: "Loading",
        props: {
            imageSrc: {
                type: String,
                default() {
                    return require('./images/loading.gif');
                }
            }
        }
    }
</script>

<style scoped>
    .loading {
        position: fixed;
        z-index: 2000;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, 0.3);
        text-align: center;
        line-height: 100vh;
    }
</style>

我不想像普通组件一样,先引入,再用v-if控制它的显示与移除。

我想用js方法来完成显示与移除,比如:调用Loading.show()就显示,调用Loading.complete()就移除,这样怎么办到呢?我们这个项目没有用到cube-ui,用不了create-api。

写回答

1回答

ustbhuangyi

2020-05-03

一种简单办法是在组件 mount 的时候通过 document.body.appendChild(this.$el),把它挂载到 body 下,组件的用法还是用 v-if 控制,show 和 hide 方法只是去修改它的标志。 

当然更推荐你使用 vue-create-api 这个插件,这个是可以独立使用而不依赖于 cube-ui 的。
https://github.com/cube-ui/vue-create-api

0
1
他门说这就是人生
好的,感谢老师的指点!
2020-05-03
共1条回复

Vue.js2.5+cube-ui重构饿了么App(经典再升级)

掌握Vue1.0到2.0再到2.5最全版本应用与迭代,打造极致流畅的WebApp

9868 学习 · 4162 问题

查看课程