Vue组件之间数据通信之 Bus事件总线

利用new 一个新的vue实例,可以轻松实现组件之间数据通信。

方法1 新创建一个Bus的js模块
// Bus.js
import Vue from 'vue'
const Bus = new Vue()
export default Bus

// 组件Com1
import Bus from './Bus'
export default {
     data() {
        return {
			val: 0
		}
     },
	 methods: {
        changeVal(){
        	 this.val += 10;
			 Bus.$emit('val', this.val)
		 }
    },
}    

// 组件Com2
import Bus from './Bus'
export default {
    data() {
        return {
            val: 0
        }
  	 },
    mounted () {
       Bus.$on('val', data => { 
          this.val = data;
        });    
   }    
} 

// 点击组件1,就可以改变组件2中的值。
	
方法2 直接将Bus对象挂载到Vue根实例上
import Vue from 'vue'
const Bus = new Vue()

const app= new Vue({
    el:'#app',
   data:{
    Bus
    }  
	router,
	store
});

// 组件中使用
this.$root.Bus.$on()
this.$root.Bus.$emit()

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值