Laravel 显示带有vuejs事件的flash消息

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

我正在尝试做源代码中的事情,但它不起作用

但事件已发送但从未收到

下面是我能举的最简单的例子:

在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>

我的闪光
导出默认值{
创建(){
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组件之前被调用的。如果是这种情况,那么控制台将发出输出,但不会显示警报。