Vue.js 在加载组件时显示加载程序
我正在开发一个Vue应用程序,其中一个Vue实例扩展了其他几个组件Vue.js 在加载组件时显示加载程序,vue.js,Vue.js,我正在开发一个Vue应用程序,其中一个Vue实例扩展了其他几个组件 //import <Loader/> const componentOne = Vue.extend({ mounted: function() { this.$root.$data.componentOneLoading = false } //...options }); const componentTwo = componentOne.extend({ //...options }) V
//import <Loader/>
const componentOne = Vue.extend({
mounted: function() { this.$root.$data.componentOneLoading = false }
//...options
});
const componentTwo = componentOne.extend({ //...options })
Vue.component('component-two', componentTwo);
Loader.extend(componentOne);
const vm = new Vue({
el: '#app',
data: {
componentOneLoading: false
},
methods: {
toogleComponentOne: function() {
this.componentOneLoading = true;
}
},
components: {
componentOne
}
});
这是一样的,即使我用div包装它
<div id='#app'>
<button @click="toogleComponentOne()"
<div v-if="componentOneLoading = false">
<component-two></component-two>
</div>
<div v-else>
<loader v-else></loader>
</div>
</div>
您可以在装入组件2
时发出自定义事件,然后使用事件侦听器切换componentOneLoading
,并使用v-show
而不是v-if
来确保DOM上存在元素:
//componentTwo.vue
安装:{
...
此.$emit('toggleLoading')
}
您可以在安装组件2
时发出一个自定义事件,然后使用事件侦听器切换componentOneLoading
,并使用v-show
而不是v-if
来确保DOM上存在元素:
//componentTwo.vue
安装:{
...
此.$emit('toggleLoading')
}
我不确定这是否有效。为了调用mounted
,componentTwo
需要挂载,但是正如您在我的HTML中看到的那样,@click
事件将布尔值设置为true,这将显示加载程序组件,从不给组件wo挂载和执行mounted()
我不确定这是否有效。为了调用mounted
,componentTwo
需要挂载,但正如您在我的HTML中看到的那样,@click
事件将布尔值设置为true,这将显示加载程序组件,而不会让组件wo挂载并执行mounted()
<div id='#app'>
<button @click="toogleComponentOne()"
<div v-if="componentOneLoading = false">
<component-two></component-two>
</div>
<div v-else>
<loader v-else></loader>
</div>
</div>