vue组件通信——子组件传递数据给父组件

本文介绍Vue中子组件如何向父组件传递数据。通过实例演示了子组件使用$emit触发事件,父组件通过v-on监听并获取子组件传递的数据。

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

上次已经介绍了父组件如何传递数据给子组件,那么,子组件又是如何将数据传递给父组件的呢?

vue中,子组件用$emit()来触发事件,父组件用$on()来监听子组件,也可通过直接在子组件的自定义标签上使用v-on来监听子组件触发的自定义事件。

下面通过一个例子来讲解:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <p>每次加1后的总数:{{count1}}</p>
    <p>每次加2后的总数:{{count2}}</p>
    <my-com @toadd1="total1" @toadd2="total2"></my-com>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script>
    Vue.component('my-com',{
        template:'<div><button @click="add1">加1</button><button @click="add2">加2</button></div>',
        data:function(){
            return {
                count:0
            }
        },
        methods:{
            add1:function(){
                this.count++;
                this.$emit('toadd1',this.count);
            },
            add2:function(){
                this.count+=2;
                this.$emit('toadd2',this.count);
            }
        }
    });
    var app=new Vue({
        el:'#app',
        data:{
            count1:0,
            count2:0
        },
        methods:{
            total1:function(count){
                this.count1=count;
            },
            total2:function(count){
                this.count2=count;
            }
        }
    })
</script>
</body>
</html>

这里只讲解加1的操作,在子组件中,在模板中声明了一个自定义事件toadd1,父组件通过v-on事件绑定,在子组件中执行加1操作后,通过$emit来触发toadd1事件(emit的第一个参数,子组件的自定义事件),通过传入参数(emit的第二个参数),当子组件触发后父组件监听并将数据通过参数传递给total函数,然后渲染到父组件中。

明天继续补充!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值