Skip to content

事件发布订阅模式(Event Bus)

来源:js/mvvm.html

通过 $on 注册事件、$emit 触发事件,实现组件间通信。这是 Vue 2 事件总线的核心原理。


演示:Event Bus 交互

注册多个事件监听器,点击按钮触发事件,观察回调执行。


原理

eventHub.subs = {
  'sum': [fn1, fn2],        // 同一事件可注册多个回调
  'inputchange': [fn3]
}
  • $on(type, fn) — 将回调推入对应类型的队列
  • $emit(type, ...args) — 遍历队列,依次调用所有回调

原始代码中 eventHub.$emit('sum', 1, 2, 4, 5, 6, 7, 8, 9, 10) 触发后,回调通过 reduce 求和输出 52