vue-bus-manager
Version:
vue bus event manager
30 lines (26 loc) • 651 B
JavaScript
export default function bus(Vue) {
const version = Number(Vue.version.split('.')[0])
if (version < 2) return
var bus = new Vue()
Object.defineProperty(Vue.prototype, '$bus', {
get () {
return bus
}
})
Vue.mixin({
created () {
this.$busListeners = {}
let $bus = this.$options.listener
for (let name in $bus) {
this.$busListeners[name] = $bus[name].bind(this)
bus.$on(name, this.$busListeners[name])
}
},
beforeDestroy () {
for (let name in this.$busListeners) {
bus.$off(name, this.$busListeners[name])
}
this.$busListeners = null
}
})
}