非父子组件之间的传值其实和子往父传值是差不多的,只不过非父子组件之间的传值,是借助一个vue实例,一般起名为bus。
非父子组件之间的传值的步骤:
1. 在某个方法中,通过bus.$emit发射一个自定义事件,并传递数据(当前发射的数据存储在bus的实例中)
2. 在mounted生命周期的钩子函数中,通过bus.$on来监听发射过来的字符串事件,并在回调函数中接受传递的数据,即bus.$on(自定义传递过来的事件的名称,回调函数)
3. 将接受的数据存储在data变量中
非父子组件之间的传值的本质其实: 是将要传递的数据,存储在一个空的vue实例中,空实例进行数据的传输
$on, $emit都是vue实例的方法,注意方法中的this的指向。