vue.js 兄弟组件传值
1、兄弟之间传递数据需要借助于<事件车>,通过<事件车>的方式传递数据
2、创建一个Vue的实例,让各个兄弟共用同一个事件机制。
3、传递数据方,通过一个事件触发bus.$emit(方法名,传递的数据)。
4、接收数据方,通过mounted(){}触发bus.$on(方法名,function(接收数据的参数){用该组件的数据接收传递过来的数据}),此时函数中的this已经发生了改变,可以使用箭头函数。
什么是兄弟组件?
<template>
<div>
<div class="moudle1"></div> //我的博客导航栏在这里
<nuxt/>
<div class="moudle2"></div> //我的博客页脚在这里
</div>
</template>
例如在nuxt框架中,moudle1和moudle2之间就是兄弟组件的关系,若他们之间想要传值,则需要借助<事件车>。
实例如下:
1、我们可以创建一个单独的js文件eventVue.js,内容如下:
import Vue from 'vue'
export default new Vue
2、假如moudle2向moudle1传值,那么moudle2内容如下:
<template>
<div class="moudle2">
<button @click="abtn">A按钮</button>
</div>
</template>
<script>
import eventVue from '../../js/eventVue.js'
export default {
name: 'app',
data () {
return {
'msg':"我是组件A"
}
},
methods:{
abtn:function(){
eventVue .$emit("myFun",this.msg) //$emit这个方法会触发一个事件
}
}
}
</script>
3、moudle1的内容如下:
<template>
<div class="moudle1">
<div>{{btext}}</div>
</div>
</template>
<script>
import eventVue from '../../js/eventVue.js'
export default {
name: 'app',
data () {
return {
'btext':"我是B组件内容"
}
},
mounted(){
this.bbtn();
},
methods:{
bbtn:function(){
eventVue .$on("myFun",(message)=>{ //这里最好用箭头函数,不然this指向有问题
this.btext = message
})
}
}
}
</script>
这样在moudle2里面点击函数就可以改变兄弟组件moudle1里面的值了。