vue组件传值之bus篇


不只是父子级页面会有通信,有时候两个组件也需要通信(非父子关系,即使没有任何依赖关系的页面也可以使用)

新建bus总线

在main.js下新建bus.js

import Vue from 'vue'
export default new Vue();

触发Bus.$emit

在b页面将值传给a页面

<template>
	<div @click="onfocus"></div>
</template>

<script>
    import Bus from '@/bus.js'
    
	export default{
		methods:{
	    	onfocus:function(fromid){
		    	Bus.$emit('getBData',"要传输的内容,可以为字符串也可以为对象")
		     }
	    }
	}
</script>

监听Bus.$on

在a页面监听b页面传过来的值.getisshow

<script>
    import Bus from '@/bus.js'
    
	export default{
		created(){
			Bus.$on('getBData',data => {
				console.log(data)   //接收到的data为"要传输的内容,可以为字符串也可以为对象"
			})
		}
	}
</script>

销毁Bus.$off

我是放在传值前去销毁bus总线,在b页面的beforeCreate钩子里使用

<template>
	<div @click="onfocus"></div>
</template>

<script>
    import Bus from '@/bus.js'
    
	export default{
		methods:{
	    	onfocus:function(fromid){
		    	Bus.$emit('getBData',"要传输的内容,可以为字符串也可以为对象")
		     }
	    },
	    beforeCreate() {
		    Bus.$off("getBData");
		  },
	}
</script>

使用bus总线可能会遇到的问题
1,页面的组件遇到获取不到值的情况,触发和监听的对象是否为同一个
2,第一次获取不到值的情况,查看监听函数是否在触发函数之前存在 (a页面写的监听,一定要先于b页面的传值)

后期遇到补充…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值