Vue.js 事件总线$emit的别名

Vue.js 事件总线$emit的别名,vue.js,vue-component,event-bus,Vue.js,Vue Component,Event Bus,我想为常用的事件总线方法$emit,$on等创建别名 这样我就可以像这样引用事件总线对象:EventBus.publish(…) 我试过: import Vue from 'vue' const EventBus = new Vue() export const publish = EventBus.$emit export const subscribe = EventBus.$on 然后: 从'@/utils/EventBus.js'导入*作为EventBus 但是我发现,$emit不是

我想为常用的事件总线方法
$emit
$on
等创建别名

这样我就可以像这样引用事件总线对象:
EventBus.publish(…)

我试过:

import Vue from 'vue'
const EventBus = new Vue()

export const publish = EventBus.$emit
export const subscribe = EventBus.$on
然后:

从'@/utils/EventBus.js'导入*作为EventBus

但是我发现,$emit不是一个函数

我做错了什么


谢谢

请确保绑定到对象,否则该方法将无法工作:

从“Vue”导入Vue
const EventBus=new Vue()
export const publish=EventBus.$emit.bind(EventBus)
export const subscribe=EventBus.$on.bind(EventBus)
export const unsubscribe=EventBus.$off.bind(EventBus)
或者更明确地说:

导出函数发布(名称,…参数){
EventBus.$emit(名称,…参数)
}
导出函数订阅(名称,fn){
EventBus.$on(名称,fn)
}
导出功能取消订阅(名称,fn){
EventBus.$off(名称,fn)
}
您可以这样导入它:

import*作为事件总线从'./EventBus.js'导入
订阅('event',处理程序)

我会尝试
const publish=EventBus.$emit.bind(EventBus)
我很确定我尝试了
bind
,但很可能在其他地方弄糟了:)谢谢