一、子组件触发父组件中的函数
第一种方法比较常见,是子组件通过触发父组件的方法,以参数的形式给父组件传值。这种方法有几种形式:
- 子组件向父组件传递一个值
子组件:this.emit('change', this.value);
父组件:<test @change="getParams($event)" />
<test @change="getParams" />
绑定事件处理函数时,可以不带括号,形参则默认为事件对象,如果绑定时带上了括号,再想使用事件对象则需要传入$event作为实参。
- 子组件向父组件传递一个值,并携带额外参数
子组件:this.emit('change', this.value);
父组件:
<!-- 插槽 -->
<template slot="planned_amount" slot-scope="text, record">
<!-- 在父组件中使用子组件 -->
<test @change="getParams(record,$event)" />
</template>
- 子组件向父组件传递多个值
子组件:this.emit('change', this.value,this.text);
父组件:<test @change="getParams" />
绑定事件处理函数时,不能携带括号!!!如果携带括号并且在括号内加了$event,只能拿到子组件传递过来的第一个参数。
- 子组件向父组件传递多个值,并携带额外参数
子组件:this.emit('change', this.value, this.text);
父组件:
<!-- 插槽 -->
<template slot="planned_amount" slot-scope="text, record">
<!-- 在父组件中使用子组件 -->
<test @change="getParams(record,arguments)" />
</template>
arguments是方法绑定中的一个关键字,内部包括了所有方法触发时传递过来的实参。arguments和额外参数的位置谁先谁后不做要求,建议arguments放后面。