Vue的$emit、$on、$attrs、$listeners

本文通过一个实例详细介绍了Vue中组件间如何使用$emit和$on进行通信。组件A和B分别发送数据,而组件C通过事件中心监听并接收这两个数据。这种通信方式在多层组件结构中十分常见,用于实现数据的传递和更新。
摘要由CSDN通过智能技术生成

$emit、$on

$on用来设置监听事件,$emit用来触发监听事件。

通过一个三个子组件间的通信来理解和使用$emit和$on。

<div id="app">
    <aaa></aaa>
    <bbb></bbb>
    <ccc></ccc>
</div>

<script type="text/javascript">
    var event=new Vue();
    Vue.component('aaa',{
        template:`<div><p>组件A要发送的name={{name}}</p><button @click="sendname">发送name给C</button></div>`,
        data(){
            return{
                name:"小明"
            }
        },
        methods:{
            sendname(){
                event.$emit('getAname',this.name);
            }
        }
    });
    Vue.component('bbb',{
        template:`<div><p>组件B要发送的age={{age}}</p><button @click="sendage">发送age给C</button></div>`,
        data(){
            return{
                age:"123"
            }
        },
        methods:{
            sendage(){
                event.$emit('getBage',this.age);
            }
        }
    });
    Vue.component('ccc',{
        template:`<p>组件C要接收组件A的name={{name}},要接收组件B的age={{age}}</p>`,
        data(){
            return{
                name:"",
                age:""
            }
        },mounted() {
            //这里需要用到箭头函数,因为箭头函数不会产生this,如果不用箭头函数,this指代的是event
            event.$on('getAname',name=>{
                this.name=name;
            });
            event.$on("getBage",age=>{
                this.age=age;
            });
        }
    });
    new Vue({
        el:"#app",
        data:{

        },
        methods:{

        }

    });
</script>

组件间的通信,需要双方有发送数据源和接收数据源,其次需要发送函数和接收函数。

这里通过创建一个空的Vue实例作为事件中心,通过它来设置监听事件,和触发事件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值