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

Vue 2子组件通过$emit向父组件传值失败求助

解决Vue 2子组件向父组件传值失败的问题

嘿,你的代码逻辑其实没大问题,核心bug是父组件没给发射事件的子组件绑定监听!

你看App.vue里,你给<scene>组件加了@navigate="navigateTo"事件监听,但实际触发navigate事件的是<buttons>组件啊!父组件根本没监听Buttons的事件,自然收不到传过来的值。

两步搞定问题:

  1. 给Buttons组件添加事件监听
    修改App.vue里的Buttons标签,补上事件绑定:
<buttons @navigate="navigateTo"></buttons>
  1. 初始化selectedScene变量
    你在navigateTo方法里给this.selectedScene赋值,但这个变量没在data里声明,Vue会报错。需要在App.vue的data里初始化它:
data() {
  return {
    selectedScene: ''
  }
}

修改后的完整App.vue代码:

<template>
  <div id="app" class="container">
    <scene @navigate="navigateTo"></scene>
    <buttons @navigate="navigateTo"></buttons>
  </div>
</template>
<script>
import Scene from "./components/Scene.vue";
import Buttons from "./components/Buttons.vue";
export default {
  name: "app",
  data() {
    return {
      selectedScene: ''
    }
  },
  methods: {
    navigateTo(dest) {
      console.log('received value', dest);
      this.selectedScene = dest;
    }
  },
  components: {
    Scene, Buttons
  }
};
</script>
<style scoped>
</style>

现在再点击Buttons里的按钮,父组件的navigateTo方法就能接收到dest值,控制台也会正常打印received value了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:28:20