Laravel 显示带有vuejs事件的flash消息
我正在尝试做源代码中的事情,但它不起作用 但事件已发送但从未收到 下面是我能举的最简单的例子: 在bootstrap.js中:Laravel 显示带有vuejs事件的flash消息,laravel,vue.js,Laravel,Vue.js,我正在尝试做源代码中的事情,但它不起作用 但事件已发送但从未收到 下面是我能举的最简单的例子: 在bootstrap.js中: window.events = new Vue(); window.flash = function (message, level = 'success') { console.log('emit'); // This is working window.events.$emit('flash', { message, level }); }; V
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>
我的闪光
导出默认值{
创建(){
window.events.$on(
“闪存”,数据=>警报(“事件!!!”)
);
},
};
在我看来:
<flash></flash>
我可以在我的视图中看到组件渲染ie我的FLASH消息,但我从未收到来自emit的警报
我在调试器中也没有错误
我错过什么了吗?看起来很简单……您问题中的代码设置了一个名为
flash
的全局函数来触发事件。为了触发事件,必须在某个地方调用该函数
这是一个例子。除了触发事件外,所有内容都来自您的代码
请注意,只有在创建闪存组件后调用flash
方法时,警报才会显示
另外,请记住,当组件被破坏时,使用总线删除侦听器,以防止在组件被多次创建时添加多个侦听器。这是一个老问题,但我也遇到了同样的情况,我的解决方案可能不是最好的,但对我来说是可行的 根据此响应,“注意,只有在创建flash组件后调用flash方法时,警报才会显示。”作者:Bert flash组件可能有一些用例,如果您想在同一视图/页面中使用,就可以了,因为组件已经安装,但仍然没有触发任何事件。但是,如果要使用vue路由器在视图/页面转换中使用,则需要使用vuex存储警报消息,然后获取并显示警报。
你在某处调用
flash()
吗?现在,我简化了它以查找bug,我不调用flash(),我只是调用alert('event')来知道它是否被触发。如果window.events.$emit('flash')
已被调用,但从未收到过Dok,所以我应该在哪里调用它?在任何vue组件中???因此,您知道,console.log('emit')
在某个地方被触发?嗯,让我检查一下,我会快速尝试一下是的,它正在工作。。。。我不明白的是,如果我已经有了“console.log('emit');/,为什么我需要调用flash()方法这是工作`工作???我将再次阅读vuejs文档:)谢谢@JuliatzindelToro您可能正在某处调用flash
,但它是在创建flash.vue组件之前被调用的。如果是这种情况,那么控制台将发出输出,但不会显示警报。