Javascript VueJS$emit和$on在一个组件中不工作时转到另一个组件页面
我正在尝试长时间使用VueJavascript 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
$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触发器事件