vue子组件$emit传出参数后,使用arguments接收
时间: 2024-10-22 14:16:20 浏览: 25
对vue.js中this.$emit的深入理解
5星 · 资源好评率100%
在Vue.js中,`$emit` 是用于子组件向父组件传递数据的一个机制,通常在子组件触发自定义事件时使用。当子组件需要将参数传给父组件时,可以在 `v-on` 指令绑定的函数中使用 `$emit`,并提供相应的事件名以及要传递的参数。
例如,假设你有一个子组件 `ChildComponent`,它想在某个条件满足时通知父组件:
```html
<template>
<button @click="sendData">发送数据</button>
</template>
<script>
export default {
methods: {
sendData() {
// 子组件想要传递的数据
const data = '这是一个参数';
// 使用 $emit 函数,并指定事件名称(如 'parentEvent'),并将参数作为 arguments 对象
this.$emit('parentEvent', { key: 'value', data });
}
}
}
</script>
```
然后,在父组件 `ParentComponent` 中,你可以监听这个自定义事件并从 `arguments` 对象中获取参数:
```javascript
<template>
<ChildComponent @parentEvent="handleParentEvent" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
methods: {
handleParentEvent(event) {
// event.detail 就包含了从子组件传来的参数对象
const eventData = event.detail;
console.log('Received data:', eventData.data); // 输出:'这是一个参数'
}
}
}
</script>
```
阅读全文