Vue.js 在加载组件时显示加载程序

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

我正在开发一个Vue应用程序,其中一个Vue实例扩展了其他几个组件

//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>