VUE-中央事件总线插件vue-bus

本文介绍如何在Vue项目中使用全局事件总线(bus)实现组件间通信。通过定义和使用自定义事件,实现了从子组件向父组件传递随机数值的功能。文章通过具体代码示例展示了事件总线的安装、事件的触发与监听过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

vue-bus.js

const install = function (Vue) {
    const Bus = new Vue({
        methods: {
            emit (event, ...args) {
                this.$emit(event, ...args);
            },
            on (event, callback) {
                this.$on(event, callback);
            },
            off (event, callback) {
                this.$off(event, callback);
            }
        }
    });
    Vue.prototype.$bus = Bus;
};

export default install;

 

main.js

import VueBus from './vue-bus';
Vue.use(VueBus); //加载插件VueBus

 

views/counter.vue

<template>
    <div>
        {{ number }}
        <button @click="handleAddRandom">随机增加</button>
    </div>
</template>
<script>
    export default {
        props: {
            number: {
                type: Number
            }
        },
        methods: {
            handleAddRandom () {
                // 随机获取 1-100 中的数
                const num = Math.floor(Math.random () * 100 + 1);
                this.$bus.emit('add', num);
            }
        }
    };
</script>

说明:

    1)定义一个按钮,组件有个属性名称是number;

   2)组件定义了一个方法,随机去一个数据,会调用bus定义的一个时间,并将数据传递过去;

 

 

views/index.vue

<template>
    <div>
        <h1>首页</h1>
        随机增加:
        <Counter :number="number"></Counter>
    </div>
</template>
<script>
    import Counter from './counter.vue';

    export default {
        components: {
            Counter
        },
        computed: {
           .....
        },
        methods: {
            .......
            handleAddRandom (num) {
                this.number += num;
            }
        },
        data () {
            return {
                number: 0
            }
        },
        created () {
            this.$bus.on('add', this.handleAddRandom);
        },
        beforeDestroy () {
            this.$bus.off('add', this.handleAddRandom);
        }
    }
</script>

说明:

    1)导入自定义的组件,计数器;

    2)组件创建和销毁后,分别绑定和基础自定义的事件add,即对add事件进行监听;

    3)接受触发add事件后,接受到传递过来的数据;

 

 

 

效果图

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值