假设我具有以下组件层次结构:
App.vue
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.vue
和Player.vue
之间创建更直接的关系来完成这项工作?这里的活动甚至是正确的选择吗?