自定义事件
vm对象具有绑定和分发事件的能力,通过触发监听,传递数据给函数实现组件间通信
在父组件与子组件中使用
子向父通信的基本方式之一,通过父组件包含子组件的实例对象来完成绑定监听
//通过组件绑定
<Event1 @click="test"></Event1>
//通过ref获取子组件绑定
<Event1 ref="event1"></Event1>
mounted() {
this.$refs.event1.$on('click',this.test)
},
//子组件
this.$emit('click',data) 传递数据
全局事件总线
任意组件对象都能访问到,Vue.prototype
此时将vm 挂载到Vue.prototype
,就可以实现全局事件总线,完成任意组件间通信
/*
组件实例: this
应用实例: vm
this.__proto__ = vm
this.__proto__.__proto__ = Vue.prototype
*/
beforeCreate(){
Vue.prototype.$Bus = this
}
全局事件总线对象的两个特定
- 一个对象具有绑定和分发事件的功能
- 所有组件对象都能够访问 利用原型对象共享数据
注意事项
使用全局事件总线,当切换组件时及时销毁$off
,不然重复进入组件可能会绑定多个事件
本质上还是利用函数形参接收数据,创建一个容器用于管理函数,调用函数完成发送数据 结构
{
key:[]
}
管理不够集中,太过分散