请问如何实现动态挂载组件到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
相似问题