组件间通信(全局事件总线)vue2---第四节

本文介绍了如何在Vue2中通过创建全局事件总线实现组件间的通信。首先,通过安装全局事件总线$bus使得所有组件都能访问。然后在组件中利用$emit发送事件和$on接收事件,以此传递数据。以A、B组件为例,展示了在A组件中触发事件并传递值,B组件通过$on监听并接收该值,实现了数据的传递。最后指出,全局事件总线的安装可在new Vue实例化前完成,不影响通信效果。
摘要由CSDN通过智能技术生成

在我们使用组件化编程的时候,在模板里面使用标签引入组件时,它实例化了当前的组件实例,所以this指向当前组件,也就是new Vue.extend({}), 不难看出,他继承了Vue,所以我们也可以访问Vue上面定义属性,可以访问$emit.$on,$off...,所以,我们想到了,在Vue实例上面定义一个自己的实例,可以让所有组件访问得到,借助$emit抛出事件,和$on来接收,这就完成了任何组件的通信,也就是全局事件总线,

第一步,安装全局事件总线$bus,

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false
const Demo=Vue.extend({})
const bus=new Demo()
Vue.prototype.$bus=bus

new Vue({
  render: h => h(App),
}).$mount('#app')

然后我们在所有组件里面访问

<template>
<div>
  <h1>App</h1>
  <CompontsA/>
  <CompontsB/>
</div>
  
</template>

<script>
import CompontsA from './components/CompontsA.vue'
import CompontsB from './components/CompontsB.vue'
export default {
  components:{CompontsA,CompontsB},
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值