NuxtJS 和事件总线
NuxtJS and event bus
我正在尝试从 nuxt 中的实例 属性 创建一个事件,但是该事件没有发出或接收。
plugins/internal/bus.js
import Vue from 'vue';
const eventBus = {}
eventBus.install = function (Vue) {
Vue.prototype.$bus = new Vue()
}
Vue.use(eventBus)
plugins/internal/index.js
import Vue from 'vue';
export default function (_ctx, inject) {
const notify = function (msg) {
console.log('emitting', msg);
setInterval(() => {
this.$bus.$emit('add', msg);
}, 500);
}
.bind(new Vue());
inject('notify', notify);
}
nuxt.config.js
plugins: [
'~/plugins/internal/bus.js',
'~/plugins/internal/index.js',
...
]
在我的组件中,
mounted() {
this.$bus.$on('add', (val) => {
console.log(val);
})
this.$bus.$on('close', this.onClose)
},
执行 this.$notify({ foo: 'bar' })
,正确调用实例 属性,但是事件未发出或未收到,坦率地说,不确定如何调试。我在这里错过了什么?
最后,问题出在未正确注册的组件 (Notification
) 上。
我正在尝试从 nuxt 中的实例 属性 创建一个事件,但是该事件没有发出或接收。
plugins/internal/bus.js
import Vue from 'vue';
const eventBus = {}
eventBus.install = function (Vue) {
Vue.prototype.$bus = new Vue()
}
Vue.use(eventBus)
plugins/internal/index.js
import Vue from 'vue';
export default function (_ctx, inject) {
const notify = function (msg) {
console.log('emitting', msg);
setInterval(() => {
this.$bus.$emit('add', msg);
}, 500);
}
.bind(new Vue());
inject('notify', notify);
}
nuxt.config.js
plugins: [
'~/plugins/internal/bus.js',
'~/plugins/internal/index.js',
...
]
在我的组件中,
mounted() {
this.$bus.$on('add', (val) => {
console.log(val);
})
this.$bus.$on('close', this.onClose)
},
执行 this.$notify({ foo: 'bar' })
,正确调用实例 属性,但是事件未发出或未收到,坦率地说,不确定如何调试。我在这里错过了什么?
最后,问题出在未正确注册的组件 (Notification
) 上。