一、兄弟之间传递数据须要借助于事件车,经过事件车的方式传递数据vue
二、建立一个Vue的实例,让各个兄弟共用同一个事件机制。app
三、传递数据方,经过一个事件触发bus.$emit(方法名,传递的数据)。函数
四、接收数据方,经过mounted(){}触发bus.$on(方法名,function(接收数据的参数){用该组件的数据接收传递过来的数据}),此时函数中的this已经发生了改变,能够使用箭头函数。this
实例以下:spa
咱们能够建立一个单独的js文件eventVue.js,内容以下
code
import Vue from 'vue' export default new Vue
假如父组件以下:
component
<template> <components-a></components-a> <components-b></components-b> </template>
子组件a以下:
blog
<template> <div class="components-a"> <button @click="abtn">A按钮</button> </div> </template> <script> import eventVue from '../../js/event.js' export default { name: 'app', data () { return { ‘msg':"我是组件A" } }, methods:{ abtn:function(){ eventVue .$emit("myFun",this.msg) //$emit这个方法会触发一个事件 } } } </script>
子组件b以下:
事件
<template> <div class="components-a"> <div>{{btext}}</div> </div> </template> <script> import eventVue from '../../js/event.js' export default { name: 'app', data () { return { 'btext':"我是B组件内容" } }, created:function(){ this.bbtn(); }, methods:{ bbtn:function(){ eventVue .$on("myFun",(message)=>{ //这里最好用箭头函数,否则this指向有问题 this.btext = message }) } } } </script>
这样在子组件a里面点击函数就能够改变兄弟组件b里面的值了。ip