组件通信

父组件向子组件传递数据使用props方法,Vue通信有大体上以下几种方式:

组件关系可以分为:父子组件通信,兄弟组件通信、跨级组件通信。

一、自定义事件

当子组件需要向父组件传递数据时,就需要用到自定义事件。

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

父组件也可以在子组件自定义的标签上使用v-on来监听子组件触发的自定义事件。示例如下:

<div id='app'>
    <p>{{total}}</p>
    <my-component @increase='handleGetTotal' @reduce='handleGetTotal'></my-component>
</div>
<script>
    Vue.component('my-component',{
        template:'\
        <div>\
            <button @click='handleIncrease'>+1</button>\
            <button @click='handleReduce'>-1</button>\
        </div>'
        data:function(){
            return {
                counter:0
            }
        },
        methods:{
           handleIncrease(){
                this.counter++;
                this.$emit('increase',this.counter);
           }, 
           handleReduce(){
                this.counter++;
                this.$emit('reduce',this.counter);
           },
        }
    })
    var app=new Vue({
        el:'#app',
        data:{
            total:0,    
        }
        methods:{
            handleGetTotal:function(count){
                this.total=count;
            }
        }
    })
</script>

上面的示例中,有两个按钮,分别实现加1和减1的功能,通过改变按钮的counter的值,然后通过$emit()将数据传入到父组件中中,父组件使用v-on进行接收,$emit的第一个参数,就是父组件自定义事件的名称,后面的参数就是要传递的数据,可以不填或者填写多个。

未完待续......

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值