事件总线实用程序
v2.8.4+
Quasar提供了一个全局性的EventBus,在从Quasar v1升级时特别有用,因为Quasar v1的原生Vue 2接口已被放弃。
Methods
class EventBus {
on (event: string, callback: Function, ctx?: any): this;
once (event: string, callback: Function, ctx?: any): this;
emit (event: string, ...args: any[]): this;
off (event: string, callback?: Function): this;
}
Usage
import { EventBus } from 'quasar'
const bus = new EventBus()
bus.on('some-event', (arg1, arg2, arg3) => {
// do some work
})
bus.emit('some-event', 'arg1 value', 'arg2 value', 'arg3 value')
方便的用法
在你的应用程序中创建一个文件,在其中实例化并导出新的事件总线,然后在你的应用程序中导入并使用它。
另外,在Quasar CLI项目中,为了方便起见(所以不是必须的),你可以创建一个启动文件并提供一个事件总线(确保你在quasar.config.js > boot中注册它)。
// 一个Quasar CLI启动文件(比方说/src/boot/bus.js)
import { EventBus } from 'quasar'
import { boot } from 'quasar/wrappers'
export default boot(({ app }) => {
const bus = new EventBus()
// 用于Options API
app.config.globalProperties.$bus = bus
// 用于Composition API
app.provide('bus', bus)
})
然后,在你的任何组件中,你可以使用:
// Options API
this.$bus
// Composition API
import { inject } from 'vue'
const bus = inject('bus') // 在setup()里面