兄弟组件互相传递值-this.$bus.$emit与this.$bus.$on

B组件向C组件传递一个值。
一种组件间通信的方式,
适用于任意的组件间通信。
适用于任意的组件间通信。
适用于任意的组件间通信。
通过this.$bus.$emit('事件名',数据)进行提供数据
通过this.$bus.$on('事件名',(data)=>{ })接受数据
创建一个js文件,默认导出一个vue实例
如下  aa.js 

import vue from 'vue';
export default new vue();
在父级组件中 引入兄弟组件  B   C

<template>
   <div class="bus-A">
   下面是两个兄弟组件:	
   	<BusB />
   	<BusC />
   </div>
</template>
<script>
//引入兄弟组件
import BusB from './BusB'
import BusC from './BusC'
export default{
   data(){
       return{
       }
   },
   components:{
       BusB,
       BusC
   }
}
</script>
//BusB 组件

<template>
    <div class="bus-B">
        组件B:
        <label>
        选择checkbox,可以触发组件BusC的监听事件
         <input type="checkbox" v-model="isChecked" @change="handleCheckbox">
        将B组件中的值 传递给C组件
         =========================
        </label>
    </div>
</template>
<script>
import bus from './aa';
export default{
    data(){
        return{
            isChecked:false
        }
    },
    methods:{
        handleCheckbox(){
            //分发'getCheckboxStatus'事件
            bus.$emit('getCheckboxStatus',this.isChecked,'我将将这个值从B到c');
            //传递多个参数使用逗号隔开
            // 分发事件可以将这个组件中的值 传递给另外一个组件
        }
    }
 }
</script>
//BusC组件
<template>
    <div class="bus-C">
        组件BusC:
        <p>
        这里可以得到组件BusB的checkbox的值:{{isChecked}}
        </p>
    </div>
</template>
<script>
import bus from './aa';
export default{
    data(){
        return{
            isChecked:false
        }
    },
    mounted(){
        // 必须在mounted中去调用一次
        this.getCheckboxStatus1212();
    },
    methods:{
        getCheckboxStatus1212(){
            //监听'getCheckboxStatus'事件
            bus.$on('getCheckboxStatus',(res,c) => {
                //监听到BusB组件的checkbox的状态 do something...
                //res, c是B组件传递过来的参数。
                console.log(res,c)
                this.isChecked = res;	
            })
        }
    },
    beforeDestroy(){
        //取消监听'getCheckboxStatus'事件
        bus.$off('getCheckboxStatus');
    }
}
</script>

posted @   南风晚来晚相识  阅读(897)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示