文章结构
vue项目中,所有组件实例身上都有一个$root属性,它们指向整个项目的根组件,
一般也就是App,在它们自己组件实例身上有一个$root属性指向它们共同的根组件,
专栏中在全局事件总线那一篇博客介绍了vue组件身上有$on,$emit,$off三个api。
实现消息发布与订阅模式,实际上这和$parent一样,也是消息发布与订阅模式,
不过在这里中间人是它们的根元素。
// 接收数据组件
methods: {
btn(){
this.$root.$off("hello")
}
},
mounted() {
this.$root.$on("hello",name => {
console.log("hello",name);
})
},
// 发送数据组件
methods: {
hello() {
this.$root.$emit("hello", "HelloWorld");
}
}