vue非父子组件之间值传递

Posted 申小贺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue非父子组件之间值传递相关的知识,希望对你有一定的参考价值。

非父子之间通过一个空的vue实例作为事件总线,相当于一个中转站。这个中转站是所有组件都可以看到的,大家通过这个中转站接收和触发事件。

import Vue from vue
import App from ./App
import router from ./router

Vue.config.productionTip = false

/* eslint-disable no-new */

new Vue({
  el: #app,
  router,
   data:{
    
        eventHub:new Vue()
   
  },
  template: <App/>,
  components: { App }
})

在main.js文件中,添加一个空的vue实例eventHub。该实例需要是全局的,因为要在各个组件之中使用,而在此定义可以作为一个全局变量。

在子组件中通过this.$root.eventHub获取该实例。

在组件A中:

<script>

export default {
  name: header,
   data:function(){
     return {
         
     }
  },
  methods:{
     sbar:function(){
      
        this.$root.eventHub.$emit(showbar,[1]);
     }
  }
}
</script>

在组件B中:

<script>
export default {
  name: slidebar,
  data:function(){
     return {
         bar:true
     }
  },  
 
  mounted:function(){
     this.$root.eventHub.$on(showbar,function(val){
         this.bar=true;
         console.log(val);
         
     }.bind(this))   //这里必须绑定this,否则报错。我也不知道为什么。
  },

  methods:{
     nobar:function(){
         this.bar=false;
     }
  }
}
</script>

 

以上是关于vue非父子组件之间值传递的主要内容,如果未能解决你的问题,请参考以下文章

VUE父子组件之间的传值,以及兄弟组件之间的传值

vue组件间通信

vue父子组件传值方式

Vue 非父子组件通信方案

Vue2.0的三种常用传值方式父传子子传父非父子组件传值

Vue父子组件和非父子组件传值问题