vue父子组件事件的回调

3 篇文章 0 订阅

目标1:父调用子组件的事件无参数,父事件执行完回调子组件事件。

目标2:父调用子组件的事件有参数,父事件执行完回调子组件事件。

一、准备工作

1.1、创建组件:

<template id="btnid" title="按钮">
    <button type="button" v-on:click="toClick('test')" v-bind:disabled="loading" class="btn btn-primary  btn-sm">
        <span v-if="!loading" title="可用状态"> <i :class="icon"></i></span>
        <span v-else title="禁用状态"><i class="fa fa-spinner fa-pulse"></i></span>
        {{text}}
    </button>
</template>

注意:其中toClick('test')中了参数  test。

二、实现方法

2.1 、目标1:父调用子组件的事件无参数,父事件执行完回调子组件事件

<script>
    //save是组件名称
    Vue.component("save", {
        template: '#btnid',
        props:……,
        methods: {
            /*  item是子组件传来的参数,本例中传值是:test  */
            toClick(item) {
                this.loading = true;
                this.$emit('chileSave', { a:"子组件传给父组件的参数" } , function (res) {
                        //这是回调函数
                        alert(res);
                    }
                });
             
        }
    });
</script>

父组件使用:

<save v-on:chileSave="SaveFunc" text="" icon="fa fa-save"></save>

new Vue({
  methods:{
      //子组件调用此函数
      SaveFunc(item,callback) {
         //item是子组件传来的参数
         //callback是回调函数
      }
  }
})

2.2、目标2:父调用子组件的事件有参数,父事件执行完回调子组件事件

<script>
    Vue.component("save", {
        template: '#btnid',
        props:……,
        methods: {
            /*  item是子组件传来的参数,本例中传值是:test  */
            toClick(item) {
                this.loading = true;
                this.$emit('chileSave', 
                   { 
                      //子传给父的参数
                      a:"子组件传给父组件的参数", 
                      //回调函数
                      callback:function (res) {
                           //这是回调函数
                           alert(res);
                       } 
                   } 
                });
             
        }
    });
</script>

 父组件使用:

<save v-on:save="Save($event,{p:"1"})" text="" icon="fa fa-save"></save>

new Vue({
  methods:{
      //子组件调用此函数
      SaveFunc(chile,paras) {
          //paras是父组件传来的参数
         //chile是子组件的参数,其中包含回调函数,chile.callback是回调函数
      }
  }
})

注意:目标2也可以使用 Promise实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值