Vue2 框架整理:子组件向父组件传递数据,$emit() 或 v-on

这里写图片描述

当子组件向父组件传递数据的时候,需要的是自定义事件: $on & $emit

子组件用$emit()触发事件, 父组件用$on() 监听子组件的事件

或者父组件也可以直接在子组件的自定义标签上使用v-on来监听子组件触发的自定义事件:

$emit() 中第一个参数是方法的名称,后面都是根据需求设定要传递的数据

比如: (下面所有 v-on 简写为语法糖@)


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #v1{
            display: none;
            width:200px;
            margin: 100px;
            border: 2px solid #faf;
        }
    </style>
</head>
<body>

<div id="v1">

    <v-component @add="sum" @reduce="sum"></v-component>

    <p>计算结果:{{ total }}</p>

</div>


<script src="vue.min.js"></script>
<script>
    window.onload=function () {
        document.getElementById("v1").style.display="block";
    };

    Vue.component('v-component',{
        template:'<div>'+
                    '<button @click="comPlus">点我加一</button> '+
                    '<button @click="comMinus">点我减一</button>'+
                  '</div>',
        data:function () {
            return{
                num:0
            }
        },
        methods:{
            comPlus:function () {
                this.num++;
                this.$emit('add',this.num);
            },
            comMinus:function () {
                this.num--;
                this.$emit('reduce',this.num);
            }
        }
    });

    var app=new Vue({
        el:"#v1",
        data:{
            total:0
        },
        methods:{
            sum:function (total) {
                this.total=total;
            }
        }
    })
</script>

</body>
</html>

实现效果:
这里写图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值