向组件的远亲发出事件

时间:2018-08-02 16:02:32

标签: javascript vue.js vue-router

假设我具有以下组件层次结构:

  • App.vue
    • vue-router的router-view标签
      • Home.vue:主页
        • PopularAudioList.vue
      • About.vue一些静态页面
    • Player.vue:始终在顶部的音频播放器,可在整个站点中使用。切换页面时播放不会中断。它具有可见的播放/停止/音量控制。

PopularAudioList.vue呈现用户可以选择的音频文件列表以及每个项目的播放按钮。每个播放按钮emits都有一个带有URL参数的audio-file-chosen事件。我知道如何使组件的父项Home.vue挂接到此事件。但是我希望Player.vue能够抓住它,因为那是控制音频播放的组件。

在那里传播事件的最佳方法是什么?我可以尝试使Home.vue将事件重新发送到App.vue,这需要将其传递给Player.vue。但这似乎效率极低,闻起来像是糟糕的体系结构,而vue-router可能会使这变得困难。

我是否应该重组体系结构以在PopularAudioList.vuePlayer.vue之间创建更直接的关系来完成这项工作?这里的活动甚至是正确的选择吗?

0 个答案:

没有答案