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

Vue子组件向父组件触发ontabselected事件无响应问题

嘿,我一眼就瞅出问题所在啦!你现在把自定义事件ontabselected绑定在了外层的<div>上,但Vue组件的自定义事件可不是这么玩的~

问题根源

Vue组件通过$emit触发的自定义事件,是组件之间的通信信号,只会传递给它的直接父组件实例,而不是普通的DOM元素。你绑定事件的<div>是个普通HTML节点,它根本接收不到Tabs组件发出的这个自定义事件,所以哪怕devtools显示事件触发了,根实例的sayHelloFromRoot方法也不会执行。

修复方案

把事件监听直接移到<tabs>组件标签上就行,修改后的代码是这样的:

<div>
  <tabs @ontabselected="sayHelloFromRoot">
    <tab></tab>
    <tab></tab>
  </tabs>
</div>

原理说明

当你切换标签页时,Tabs组件执行this.$emit('ontabselected', tab),这个事件会向上传递给它的父组件(也就是你的根Vue实例)。现在你在<tabs>标签上监听了这个事件,根实例就能捕获到它,进而触发sayHelloFromRoot方法,控制台自然就会打印出hello啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:35:58