EventBus组件通信 vue 两个无关的组件间通讯

EventBus相当于系在两个组件的桥梁,两个页面通过EventBus进行传递参数,调用方法。

示例: A页面调用B页面的方法

第一步:建立EventBus文件

在src下建立utils文件夹,utils文件夹下创立EventBus.js

 import Vue from 'vue';
 /**
  * 事件总线
  * @usage:
  * EventBus.$emit('event',payload);
  * EventBus.$on('on',(payload)=>{});
  */
 const EventBus = new Vue();
 export default EventBus

第二步:A文件(两个页面都要引用EventBus文件):

<template>
	<div>
		<div class="button" @click="toBpage">点击向B页面传递参数</div>
	</div>
</template>
<script>
    import Bus from "@/utils/EventBus";
    export default {
      data() {
        return {
	      id:'12345' //a向b传递的参数
	    }
	  },
	  methods:{
	  	toBpage(){
	  	  // getId 是自己命名的b页面也通过同一个名字接受参数,this.id 是参数
      	   Bus.$emit("getId", this.id);
        }
	  }
     }
</script>

第三步:B文件(两个页面都要引用EventBus文件):

<script>
    import EventBus from "@/utils/EventBus";
    export default {
      data() {
        return {
	      aId:'' 
	    }
	  },
	  mounted(){
	  // 获取a传过来的id
  	    EventBus.$on("getId", (id) => {
	      //a传来的参数
	      console.log(id,'----id')
	      this.aId = id  //可以赋值
	      this.getList(id) // 可以做其他操作
	    });
	  }
	  methods:{
	  	getList(id){
	  	  // 获取数据
        }
	  }
     }
</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值