vue兄弟组件的传值bus

兄弟组件通信通过bus,新建一个bus.js文件,并在两个组件分别引入

 

注:当在a.vue组件上触发点击事件时,就会触发bus上监听的事件,而bus事件监听在b.vue里面,这个时候就会触发b.vue

上的事件监听,而通过回调函数,就可以拿到a.vue组件传过来的数据,从而实现兄弟组件通信。

 

bus.js

import Vue from "vue"  
export default new Vue()

parent.vue父组件

<template>  
  <div id="app">  
    <avue></avue>  
    <bvue></bvue>  
  </div>  
</template>  
  
<script>  
import avue  from "./avue.vue"  
import bvue  from "./bvue.vue"  
export default {  
  name: 'parentvue',  
  components:{avue,bvue}  
}  
</script>  

 

a.vue组件

 

<template>  
  <div @click="aload">叶落森1</div>  
</template>  
<script>  
  import bus from "./bus.js"  
  export default{  
    methods:{  
      aload(){  
        //通过emit触发事件,并传值  
        bus.$emit("bload","我叫叶落森");  
      }  
    }  
  }  
</script>

 

b.vue组件

 

<template>  
  <div>叶落森2</div>  
</template>  
<script>  
  import bus from "./bus.js"  
  export default{     
    mounted(){  
      //通过on监听事件,回调方法获取数据       
      bus.$on("bload",value=>{  
        console.log(value);  
        //this.busListen(value)//调用busListen这个方法
      }); 
  
    }  
  }  
</script> 

 

 

 

注:可以在main.js写(这是常用的方式)

Vue.prototype.bus = new Vue();

调用方法的时候直接书写以下代码就行

a.vue

this.bus.$emit("bload"); 

b.vue

mounted中写:

this.bus.$on("bload",this.bload);  

methods中写:

methods:{
    bload(){
    }
}

 

 

 

 

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值