我正在尝试在源代码中执行here,但它无效。
但事件已发送但未收到。
这是我可以做的最简单的例子:
在bootstrap.js中:
window.events = new Vue();
window.flash = function (message, level = 'success') {
console.log('emit'); // This is working
window.events.$emit('flash', { message, level });
};
Vue.component('flash', require('./vue/components/Flash.vue'));
Flash.vue:
<template>
<div> MY FLASH</div>
</template>
<script>
export default {
created() {
window.events.$on(
'flash', data => alert('event!!!')
);
},
};
</script>
在我看来:
<flash></flash>
我可以在我的视图中看到组件呈现即MY FLASH消息,但我从来没有收到来自发出的警报!
我在调试器中也没有错误
我错过了什么吗?看起来很简单......
答案 0 :(得分:2)
您问题中的代码会设置一个名为flash
的全局函数来触发事件。该函数必须被称为某处才能触发事件。
以下是a codesandbox演示。除了触发事件之外的所有内容都来自您的代码。
请注意,警告仅显示在创建Flash组件后是否调用flash
方法。
另外,请记住在组件被销毁时使用总线删除侦听器,以防止在多次创建组件时添加多个侦听器。
答案 1 :(得分:0)