You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js 2.0子组件向父组件触发事件失效问题求助

Vue 2.0子组件向父组件触发事件无效的解决方案

嘿,我看了你的代码,问题很明确——父组件没有监听子组件触发的confirmed事件!子组件已经正确通过this.$emit('confirmed')触发了事件,但父组件里的<ConfirmMessage>标签没有绑定对应的事件处理逻辑,所以自然没反应。

下面是修正后的代码,你可以直接参考:

子组件(无需改动,你的代码是对的)

<template>
  <button @click="confirmSendMessage">Send</button>
</template>

<script>
export default {
  methods: {
    confirmSendMessage () {
      this.$emit('confirmed')
    }
  }
}
</script>

修改后的父组件

<template>
  <!-- 核心:在子组件标签上添加@confirmed监听,绑定父组件的处理方法 -->
  <ConfirmMessage @confirmed="handleConfirmed"/>
</template>

<script>
// 记得补全子组件的完整路径
import ConfirmMessage from './ConfirmMessage.vue'

export default {
  // Vue 2.0必须显式注册子组件才能使用
  components: {
    ConfirmMessage
  },
  methods: {
    handleConfirmed() {
      // 这里写你收到事件后要执行的逻辑
      console.log('收到子组件的确认事件啦!可以在这里处理发送消息的逻辑~')
    }
  }
}
</script>

关键注意点:

  • 父组件必须在子组件标签上通过@事件名="处理方法"的形式监听子组件触发的事件,事件名要和子组件$emit的完全一致(Vue 2里事件名不会自动转换大小写,别写错哦)
  • 如果需要传递参数,子组件可以写成this.$emit('confirmed', 要传的参数),父组件的处理方法就能接收:handleConfirmed(参数) { ... }

内容的提问来源于stack exchange,提问作者Leonardo Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:01:56