Javascript VueJS$emit和$on在一个组件中不工作时转到另一个组件页面

Javascript VueJS$emit和$on在一个组件中不工作时转到另一个组件页面,javascript,vue.js,vue-router,eventemitter,vue-events,Javascript,Vue.js,Vue Router,Eventemitter,Vue Events,我正在尝试长时间使用Vue$emit和$on功能,但仍然没有得到任何解决方案。我创建了一个简单的消息传递页面,它只有两个页面。一个是组件发送器和组件接收器,并为$emit和$on功能添加了事件总线 我声明了$emit和$on功能,但我不知道哪里出错了 请帮个忙 组件发送方: 从“../main”导入{EventBus}; 导出默认值{ 名称:“发送”, 数据(){ 返回{ 文本:“”, 接收文本:“” } }, 方法:{ 发送者(){ EventBus.$emit('message',this

我正在尝试长时间使用Vue
$emit
$on
功能,但仍然没有得到任何解决方案。我创建了一个简单的消息传递页面,它只有两个页面。一个是
组件发送器
组件接收器
,并为
$emit
$on
功能添加了
事件总线

我声明了
$emit
$on
功能,但我不知道哪里出错了

请帮个忙

组件发送方:


从“../main”导入{EventBus};
导出默认值{
名称:“发送”,
数据(){
返回{
文本:“”,
接收文本:“”
}
},
方法:{
发送者(){
EventBus.$emit('message',this.text);
这是.$router.push('/receive');
}
}
}
组件接收器:


从“../main”导入{EventBus};
导出默认值{
名称:“接收”,
道具:[“消息”],
数据(){
返回{
列表:空
}
},
创建(){
EventBus.$on('message',this.Receive);
},
方法:{
接收(文本){
console.log('text',text);
this.list=文本;
},
保存(){
警报('list',this.list);//需要列出值,但$emit在此不起作用
}
}
}
路由器视图:

const路由器=新路由器({
模式:“历史”,
路线:[
{
路径:“/”,
名称:“发送”,
组件:发送
},
{
路径:“/receive”,
名称:“接收”,
组成部分:接收,
道具:真的
}
]
})
Main.JS

从“Vue”导入Vue
从“./App.vue”导入应用程序
从“./router”导入路由器;
export const EventBus=new Vue();
新Vue({
el:“#应用程序”,
路由器,
渲染:h=>h(应用程序)
})

EventBus设计用于允许页面上同时存在的两个组件之间进行通信。如果您需要路由器视图之间的持久数据,那么您应该考虑使用Vuex存储


实际上,在发送消息时,接收方组件不存在,因此它没有附加到事件的侦听器。

您的错误是:

created() {
       EventBus.$on('message', this.Receive);
    },
第二个参数是一个处理程序,它应该如下所示:

created() {
        EventBus.$on('message', function(data){
           this.Receive(data);
           console.log(data)
        });

    },

您现在应该看到2
console.log()
messages

您是如何测试它的?您是否打开了两个选项卡,然后在浏览器的选项卡上加载页面?是什么触发了您的
sender()
方法?您好,Onwuka,刚才我在重定向到接收方页面后传递了click event save emit value。但我在接收方页面中没有获得任何$on触发器事件。您好,简而言之,我需要为接收方页面获取$on触发器事件