首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Vue中侦听所有子组件发出的事件

在Vue中侦听所有子组件发出的事件
EN

Stack Overflow用户
提问于 2019-11-07 14:27:36
回答 1查看 1.1K关注 0票数 0

我有一个子组件,包装了一个第三方视频组件。如何侦听从该子组件发出的所有事件?

代码语言:javascript
运行
复制
<event-emitter
    v-on:play="handleEvent"
    v-on:stop="handleEvent"
    v-on:ad-pause="handleEvent"
    v-on:ad-play="handleEvent"
    v-on:video-quartile-25="handleEvent"
    v-on:video-quartile-50="handleEvent"
    ... this could many more lines ...
 ></event-emitter>

事件可能如下所示的{ type: "play", time: 28, ... }

目前我有这个

代码语言:javascript
运行
复制
 <event-emitter v-on:emitter-events="handleEvent"></event-emitter>

<event-emitter>中,我将所有发出的事件合并为具有类型属性的单个事件。现在有一个缺点,因为handleEvent函数很可能会变成长的switch语句。有没有更具声明性的方法?

E.g

代码语言:javascript
运行
复制
 <event-emitter 
   v-on:listen-to-all-events="normalHander"
   v-on:something-unusal-has-happend="aHandlerForThisVariationOfEvent"
 ></event-emitter>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-30 15:04:42

最后,我只是在父组件中编写了所有代码,其中<parent>充当rest应用程序的控制器。不像我希望的那样是声明性的--当然也没有回答这个问题。我认为这不可能如所描述的那样。

不过,@Gander提供的那个事件总线链接仍然很有用。

代码语言:javascript
运行
复制
<parent> <-- I handle the EmitterEvents
  <somthing-else />
  <event-emitter v-bind:emitter-events="handleEmitterEvents" />
  <another-component />
</parent>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58743099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档