vue父组件将方法传给子组件和子组件将方法传给父组件

本文介绍了Vue中父子组件如何交互,包括父组件如何将方法传给子组件,以及子组件如何通过$emit将方法回传给父组件。通过示例详细阐述了方法定义、传递和接收的过程。

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

1、父组件将方法传给子组件
首先需要在父组件中定义一个方法如下:

<template>
    <div>
        <ntable 
            :getdata="getdata"  
            :setdata="setdata"
        ></ntable>

    </div>
</template>
<script>
import ntable from '@/components/ntable'
export default {
    data(){
        return{
            mockData:{
            	name:'张三',
            	age:'12'
            }
        }
    },
    components:{
        ntable,
    },
    methods:{
        getdata(){
            return this.mockData;
        },
        setdata(data){
            // do something
        },
    },
}
</script>

第一步:在methods中定义getdata()和setdata()方法
第二步:将方法传给子组件
第三步:子组件接收方法,如下:

<template>
    <div>
        <button @click="getParentData">调父组件的方法</button>
    </div>
</template>
<script>
export default {
    props:{	//  在props中接收父组件传过来的值
        getdata:{
            type:Function
        },
        setdata:{
            type:Function
        }
    },
    methods:{
        getParentData(){
            var data = [];
            this.getdata(); // 父组件传过来的方法在这里调用
            this.setdata(data);
        },
    }
}
</script>

至此,父组件传函数给子组件就已经完成了,至于里面做什么操作是根据业务来写的。
2、子组件将方法传给父组件
首先在子组件中定义一个方法,然后传给父组件,如下:

<template>
    <div>
    </div>
</template>
<script>
export default {
    mounted(){
        this.$emit('setTableData',this.setTableData);/* 向外暴露set方法 */
    },
    methods:{
        setTableData(data){
        	// do something
        },
    }
}
</script>

我是通过$emit通知父组件,父组件监听setTableData函数拿到子组件传过去的函数

在父组件中如下:

<template>
    <div>
        <ntable 
            @setTableData="setableData" 
        ></ntable>

    </div>
</template>
<script>
import ntable from '@/components/ntable'
export default {
    data(){
        return{
            actionFun:undefined,
        }
    },
    components:{
        ntable,
    },
    methods:{
        setableData(data){
            this.actionFun = data;
        },
    },
}
</script>

当子组件的函数通过$emit传到父组件中时,父组件通过setableData监听到函数,在data中声明一个变量接收一个这个函数,这样这个函数就可以在其他地方调用了。

注:能力有限,水平一般,欢迎大神指出不足,欢迎不明白的小伙伴留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值