vue.js 兄弟组件传值

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里面的值了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值