请问如何实现动态挂载组件到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回答
-
一种简单办法是在组件 mount 的时候通过 document.body.appendChild(this.$el),把它挂载到 body 下,组件的用法还是用 v-if 控制,show 和 hide 方法只是去修改它的标志。
当然更推荐你使用 vue-create-api 这个插件,这个是可以独立使用而不依赖于 cube-ui 的。
https://github.com/cube-ui/vue-create-api012020-05-03
相似问题