evnetbus-事件总线

4/5/2020 Vue

# 初始化

  1. 创建 js 文件 例如新创建 event-bus.js
// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()
1
2
3

EventBus 实质上是一个不具备 dom 的组件,具有的仅仅是它的实例方法而已

  1. 全局初始化 在 main.js 初始化 EventBus
Vue.prototype.$EventBus = new Vue()
1

# 发送事件与接收事件

例如有 a ,b 两个页面需要通信,a 页面发送事件, b 页面接收事件

// a 页面
<template>
    <button @click="sendMsg()">-</button>
</template>

<script> 
import { EventBus } from "../event-bus.js";
export default {
  methods: {
    sendMsg() {
      EventBus.$emit("aMsg", '来自A页面的消息');
    }
  }
}; 
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
b 页面
<template>
  <p>{{msg}}</p>
</template>

<script> 
import { 
  EventBus 
} from "../event-bus.js";
export default {
  data(){
    return {
      msg: ''
    }
  },
  mounted() {
    EventBus.$on("aMsg", (msg) => {
      // A发送来的消息
      this.msg = msg;
    });
  }
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

具体参考 (opens new window)

Last Updated: 12/30/2022, 2:33:12 PM