事件总线实用程序
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()里面