23 lines
676 B
JavaScript
23 lines
676 B
JavaScript
|
import { ref, onMounted, onUnmounted } from 'vue';
|
||
|
|
||
|
export const eventBus = {
|
||
|
listeners: {},
|
||
|
on(eventName, callback) {
|
||
|
if (!this.listeners[eventName]) {
|
||
|
this.listeners[eventName] = [];
|
||
|
}
|
||
|
this.listeners[eventName].push(callback);
|
||
|
},
|
||
|
emit(eventName, ...args) {
|
||
|
const callbacks = this.listeners[eventName];
|
||
|
if (callbacks) {
|
||
|
callbacks.forEach(callback => callback(...args));
|
||
|
}
|
||
|
},
|
||
|
off(eventName, callback) {
|
||
|
const callbacks = this.listeners[eventName];
|
||
|
if (callbacks) {
|
||
|
this.listeners[eventName] = callbacks.filter(cb => cb !== callback);
|
||
|
}
|
||
|
}
|
||
|
};
|