VUE 创建全局事件 eventbus

Vue组件通讯

Vue组件数据通讯常常会有父子组件,兄弟组件,祖孙组件之间的数据通讯。也就是说在Vue中组件通讯有一定的原则。

父子组件通讯存在的局限性

我们了解到,vue中为了提高组件的复用和重用性,通常会分割成独立的组件,这时候就会存在父组件与子组件。父组件通过props传递数据给子组件,子组件通过emit通知父组件做相应的动作。

但是这种父子组件之间的通讯props–emit的方式,在兄弟组件间的通讯就无能为力了(兄弟组件之间不可使用props–emit)。为了解决兄弟组件通讯的局限性,在Vue中有其他的方式来处理兄弟组件之间的数据通讯,比如Vuex这样的库。但在很多情况之下,咱们的应用程序不需要类似Vuex这样的库来处理组件之间的数据通讯,而可以考虑Vue中的 事件总线 ,即 **EventBus **。

EventBus的简介

EventBus 又称为事件总线。在vue中EventBus作为沟通桥梁的概念,就像是所有组件共同相同的事件中心,可以向该中心发送注册事件或者接收事件,所有组件都可以上下平行地通知其他组件。

EventBus的使用

初始化
  • 一种方式为 新创建一个js文件,在需要的地方引入
// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()
  • 另一种方式为 可以直接在项目中的 main.js 初始化 EventBus :
// main.js
Vue.prototype.$EventBus = new Vue()
发送事件

假设你有两个子组件: DecreaseCount 和 IncrementCount ,分别在按钮中绑定了 decrease()和 increment() 方法。这两个方法做的事情很简单,就是数值递减(增) 1 ,以及角度值递减(增) 180 。在这两个方法中,通过 EventBus.$emit(channel: string, callback(payload1,…)) 监听 decreased (和 incremented )频道。

<----DecreaseCount----->
<template>
  <div class="decrease-count">
    <button @click="decrease()">点击-</button>
  </div>
</template>

<script>
import {
   EventBus
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值