Vue-geb is a vue Global Event Bus plugin to help broadcast events across the app using the power of observables.
Only add 5kb to the rxjs library.
npm install --save vue-gebOr
yarn add vue-gebIn your main.js :
import geb from 'vue-geb' Vue.use(geb) this.$geb.getBus() // Observable:Subject type this.$geb.emit({object}) this.sub = this.$geb.getBus().subscribe(data => { console.log(data) // Do anything you want with 'data' })this.sub = this.$geb.getFilteredBus({id:'modal'}).subscribe(data => { console.log(data) // The callback is only called when an event is fired with at least the id attribute equal to 'modal' })<button v-geb-click-emit="{id:'foo',payload:'Lorem'}">Send</button>Notice how we use this.sub = ... .subscribe(). You need to unsubscribe when your component unmount to avoid memory leaks.
destroyed: function () { if(this.sub) { this.sub.unsubscribe() } },Please check this example for a vue-geb modal usage.
You can also access the same api as vm.$geb outside of vue context (same Event bus too):
import { gebHandler } from 'vue-geb' gebHandler.emit({object}) This is useful for vue-geb usage in a state management library or any other js file.
Enjoy ! :)