【发布时间】:2019-01-24 22:21:02
【问题描述】:
我正在尝试在 Vue JS 中创建一个启动屏幕(加载屏幕),它会在几秒钟后消失,显示我的默认视图。我尝试了几种方法,但都无法正常工作。最接近的是CodePen 上的这个示例,但理想情况下,该组件不会在 main.js 中,而是在它自己的组件中。尽管下面的代码不起作用。
我的 main.js 如下:
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
Vue.config.productionTip = false;
// FILTERS
Vue.filter('snippet', function(value) {
return value.slice(0,100);
});
Vue.component('loading-screen', {
template: '<div id="loading">Loading...</div>'
})
new Vue({
router,
store,
render: h => h(App),
data: {
isLoading: true
},
mounted () {
setTimeout(() => {
this.isLoading = false
}, 3000)
}
}).$mount("#app");
而我的App.vue如下
<template>
<div id="app">
<loading-screen v-if="isLoading"></loading-screen>
<Top/>
<router-view/>
<PrimaryAppNav/>
</div>
</template>
<script>
import Top from './components/Top.vue'
import PrimaryAppNav from './components/PrimaryAppNav.vue'
export default {
name: 'app',
components: {
Top,
PrimaryAppNav
}
}
</script>
【问题讨论】:
-
在 vue 之外做,这样它就可以在不等待 vue 加载的情况下加载,并且看起来会更好。然后当 vue 加载时,只需从 DOM 中删除元素。
标签: javascript vue.js vuejs2