非父子组件通信 bus

在Vue.js 2.x中,推荐使用一个空的Vue实例作为中央事件总线(bus),也就是一个中介

<div id="app">
	{{message}}
	<component-a></component-a>
</div>
<script>
	let bus = new Vue();
	Vue.component('component-a', {
		template: '<button @click="handleEvent">传递事件</button>',
		methods: {
			handleEvent() {
				bus.$emit('on-message', '来自组件component-a的内容')
			}
		}
	});
	let app = new Vue({
		el: '#app',
		data: {
			message: ''
		},
		mounted() {
			let _this = this;
			// 在实例初始化时,监听来自bus实例的事件
			bus.$on('on-message', msg => {_this.message = msg})
			// 其他几种写法
			// bus.$on('on-message', ({item, index})=> this.fn(item, index))
			// bus.$on('on-message', this.fn)
		}
	})
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值