vue 子组件调用($emit)父组件方法后父组件方法如何回调子组件方法

8 篇文章 0 订阅
4 篇文章 0 订阅

子级组件中的实现

组件名称:EditTable.vue

export default{

     name:'ET',

    .......  

 

methods:{

        ShowMore(step){
            this.$emit("ChildClick",step);
        }

}

  .........

}

父级组件:

      引入: import EditTable from '../EditTable.vue';

    不要忘记在父级组件的  components 里面注册;

     父级组建中调用子级的位置:

    <EditTable  @ChildClick="ShowMore"></EditTable>

一、子组件调用父组件方法:

1.子组件方法:

……

methods:{

        ShowMore(step){
            this.$emit("ChildClick",step);
        }

}

……

第一个参数为父组件中调用子组件时@ChildClick方法名,必须保持一致;

第二个为父级组件中的方法需要的参数; 
 

2.父组件方法:

这里只做一个demo,这里是父级方法体执行完成后,返回一个值

……

methods:{

        ShowMore(step){

                let  result = step++;.

        }

}

……

3.父组件中引用子组件的地方

子组件:EditTable

<EditTable  @ChildClick="ShowMore"></EditTable> 

一定要加上@ChildClick="ShowMore",@后面的ChildClick是子组件中$emit的第一个参数值.

注:为了方便,一般这些方法全部使用一个名字,也可以保障不出错。

二,父组件处理完业务回调子组件

调用方法参考(一)。父组件回调方法这里介绍两种:

方法(一): 回调函数:

1.子组件方法:

……

methods:{
        ShowMore(step){
                this.$emit("ChildClick",step,(res)=>{
                          //回调函数的方法体.处理自己的业务.
                 });

        }

}

……

2.父组件方法:

……

methods:{

        ShowMore(step,callback){

                let  result = step++;//这里只做一个demo,这里是父级方法体执行完成后,返回一个值.

                callback(result);//这是关键,调用子组件中的回调方法.

        }

}

……

方法(二):采用Promise

1.子组件方法

……

methods:{

        ShowMore(step){

               let res = await  this.$emit("ChildClick",step);

                //拿到res后,如果还有其他逻辑,继续处理返回值 res; 下略.               

        }

}

……

2.父组件方法

……

methods:{

        ShowMore(step,callback){

                return new Promise((resolve)=>{

                           let res = step++;

                           resolve(res);
                });

        }

}

……

以上就是vue中,子组件通过$emit调用父组件中的方法后,回调子组件中的方法的处理方式.希望对你有所帮助.文中如有错漏,还请指正.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值