vue3子组件调用父组件的方法并获取返回值

需求:子组件需要向父组件传参,并获取父组件的返回值,父组件的方法自身也需要传参。

子组件

<script lang="ts" setup>
	const emits = defineEmits(["handleSave"]);
	const save = () => {
	  emits("handleSave", {
	    val: inputValue.value,
	    callback: (result: any) => {
	    	console.log('获取父组件方法的返回值',result)
	    },
	  });
	};

父组件

<template>
  <el-table :data="tableData">
	<el-table-column prop="funds" label="经费">
         <template #default="scope">
            <childEdit v-model="scope.row.funds" @handleSave="handleSave($event,scope.row,'funds')"></childEdit >
          </template>
     </el-table-column>
  </el-table>
</template>

<script setup>
const handleSave = async (e,val,key)=>{
  console.log('子组件的参数',e.value)
  val[key] = Number(e.val)
  //给子组件返回值
  e.callback(true)
}
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中,组件可以通过`$emit`方法组件发送事件,组件可以通过`v-on`指令监听组件的事件并调用相应的方法。如果需要在组件获取组件方法返回值并进行赋值,可以使用`async/await`结合`$emit`和`v-on`来实现。 具体步骤如下: 1. 在组件中定义一个异步方法,并在该方法调用需要执行的函数并返回结果。 2. 在组件中通过`$emit`方法组件发送事件,并将组件方法名和参数传递给组件。 3. 在组件中通过`v-on`指令监听组件的事件,并在事件处理函数中调用相应的方法并将结果通过`$emit`方法返回给组件。 4. 在组件中通过`await`关键字等待组件返回的结果,并将结果赋值给组件的变量。 代码示例: 组件: ```html <template> <div> <child-component @get-result="getResult"></child-component> <p>组件中的结果:{{ result }}</p> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, methods: { async getResult() { // 调用需要执行的函数并返回结果 const result = await someFunction() // 将结果通过$emit方法返回给组件 this.$emit('set-result', result) } }, data() { return { result: '' } } } </script> ``` 组件: ```html <template> <div> <button @click="getResult">获取结果</button> <p>组件中的结果:{{ result }}</p> </div> </template> <script> export default { methods: { getResult() { // 向组件发送事件,并将组件方法名和参数传递给组件 this.$emit('get-result') } }, data() { return { result: '' } }, mounted() { // 监听组件通过$emit方法返回的结果,并将结果赋值给组件的变量 this.$on('set-result', result => { this.result = result }) } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值