vuejs 中eventBus 实现 非父子组件通信 兄弟组件通信

vuejs2.0中文档里面有清楚的说明了父子组件的通讯方法,但是没怎么说到非父子组件的通讯,很多新学习的同学不太会!
在vuejs 2.0中能实现到兄弟组件或是非父子组件组件的通讯有两种方法,1.eventBus  2.vuex

我们这里说下eventBus的使用

主要内容点:

1.const = eventbus = new Vue()
// 触发 footer 组件里的change事件
2.bus.$emit('change', data)
// 在组件top 的mounted 中监听事件 
3.bus.$on('change', function (data) {
  // ...

})

举个栗子:
一个home页面用三个组件组成top.vue  cont.vue   foot.vue

 

首先创建一个Bus.js,主要是使用一个空的Vue实例作为中央事件总线

Bus.js

import Vue from 'vue'
const Bus=new Vue({
})

//导出bus
export { Bus } 

home.vue

<tmpelate>
        <top></top>
<cont></cont>
<foot></foot>

</tmpelate>

 

cont.vue

<template>
<div>
<h2>cont内容组件</h2>
<div>{{cont}}</div>
<div @click="change">click 把cont变量传给top</div>
</div>
</template>
<script>
import { Bus } from '../Bus.js'
export default {
  data() {
    return {
      cont:"我是cont的变量:cont",
    };
  },
  methods:{
    change(){

     //触发的事件名,发生的数据
      Bus.$emit('change',this.cont);
    }
  }
   
}
</script>

 

 

top.vue

<template>
<div>
<h2>top组件 </h2>
 
<div>cont页面传过来的变量{{cont}} </div>
 
</div>
</template>
<script>
import { Bus } from '../Bus.js'
export default {
  data() {
    return {
       cont:null,
    };
  },
  mounted(){

        //监测的事件名,接收过来的数据
   Bus.$on('change',(data)=>{
      this.cont=data;
    });
  } 
}
</script>

 

........................................

 

eventbus也可以传父子组件的通讯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值