学无先后,达者为师

网站首页 编程语言 正文

子组件向父组件传值的4种方法

作者:慕白Lee 更新时间: 2023-09-18 编程语言

目录

一、背景

二、4种方法

1、子组件向父组件传递一个值

2、子组件向父组件传递一个值,并携带额外参数

3、子组件向父组件传递多个值

4、子组件向父组件传递多个值,并携带额外参数


一、背景

详情页集成了很多子组件, 
但是父组件的一个上传文件的地方回显拿不到最新的文件个数,
但这里有需要上传的文件判空处理。

首先想到的是回显的时候直接获取文件集合的大小即可,
但是删除文件后还是更新不了最新的值,
所以子只能子组件传更新最新的值给父组件做判断了。

二、4种方法

1、子组件向父组件传递一个值

子组件:

var num= this.fileList().size()
this.$emit('change', num);

父组件:

​​<!-- 在父组件中使用子组件 -->

<editable-cell :num="num" :inputType="inputType" @change="handleChange($event)" />


// 事件处理函数

async handleChange(value) {

this.num = value;

}

在使用子组件时,绑定change函数的事件处理函数也可以写成如下格式: 

<editable-cell :num="num" :inputType="inputType" @change="handleChange" />

绑定事件处理函数时,可以不带括号,形参则默认为事件对象,如果绑定时带上了括号,再想使用事件对象则需要传入$event作为实参。

2、子组件向父组件传递一个值,并携带额外参数

record为额外参数( 本文的额外参数都拿record做举例 )。

子组件:

this.$emit('change', this.value);

父组件:

    <!-- 插槽 -->

    <template slot="planned_amount" slot-scope="text, record">

    <!-- 在父组件中使用子组件 -->

    <editable-cell :num="num" :inputType="inputType" @change="handleChange(record,$event)" />

    </template>



    // 事件处理函数

    async handleChange(record,value) {

    console.log(record,value)

    },

绑定事件处理函数时,record和$event的顺序不做要求,但是按照vue事件绑定的习惯,$event通常放在实参列表末尾。

3、子组件向父组件传递多个值

子组件:

// 向父组件传递了两个值

this.$emit('change', this.value,this.text);

父组件:

<editable-cell :text="text" :inputType="inputType" @change="handleChange" />

// 事件处理函数

async handleChange(param1,param2) {

console.log(param1,param2)

},

绑定事件处理函数时,不能携带括号!!!如果携带括号并且在括号内加了$event,只能拿到子组件传递过来的第一个参数。

4、子组件向父组件传递多个值,并携带额外参数

record为额外参数( 本文的额外参数都拿record做举例 )。

子组件:

// 向父组件传递了两个值

this.$emit('change', this.value,this.text);

父组件:

    <template slot="planned_amount" slot-scope="text, record">

    <!-- 在父组件中使用子组件 -->

    <editable-cell :text="text" :inputType="inputType" @change="handleChange(record,arguments)" />

    </template>



    // 事件处理函数

    async handleChange(record,args) {

    console.log(record,args)

    },

arguments是方法绑定中的一个关键字,内部包括了所有方法触发时传递过来的实参。arguments和额外参数的位置谁先谁后不做要求,建议arguments放后面。

有用请点赞,养成良好习惯!

疑问、交流、鼓励请留言!

原文链接:https://libusi.blog.csdn.net/article/details/127353961

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新