全局事件总线:适用于组件间传递数据。
第一部分:全局事件总线的理解
1.全局事件总线就像公共物品,每个组件都可以使用。用$bus来表示。
2.全局事件总线得满足两个条件。
(1)每个组件都可以访问到。意味着放在Vue.prototype最合适。
(2)全局事件总线,可以访问到$on $emit $off方法。但是这些方法都在Vue.prototype上。只有组件实例和Vue实例能访问到。所以全局事件总线,得是组件实例和Vue实例。
根据以上两个条件分析,全局事件总线,最好是Vue实例。
所以可以在脚手架入口文件,Vue配置对象中添加 beforeCreate(){Vue.prototype.$bus=this},
从而完成对全局事件总线的配置。
第二部分:全局事件总线的使用
1.明确谁接收数据,谁发送数据。
(1)接收数据的组件:给全局事件总线绑定事件。
this.$bus.$on("事件名",事件回调函数)
(2)发送数据的组件:触发全局事件总线某个事件。
this.$bus.$emit("时间名",数据)
2.组件销毁时要记得解绑全局事件总线上相关的事件。
beforedestroy(){ this.$bus.$off("事件名") }
注意:一定要写事件名,不然会把全局事件总线绑定的事件全部解绑了。