首页 > 解决方案 > 有什么方法可以在不使用事件总线的情况下在不相关的 Vue 组件之间传递数据?

问题描述

首先我想清楚为什么我不想在这种情况下使用事件总线:因为事件总线不适用于这种情况!

请先看我的 Vue.js 项目的简化结构:

App.vue
  |---Map.vue
  |---Info.vue
  |     |---layerInfo.vue
  |
  |---WMS.vue
  |---WFS.vue
  |---Basic.vue

该图只显示了哪个组件创建了哪个子组件,但它们并非都是在 Vue 应用程序启动时创建的。layerInfo.vue 仅在满足某些条件时才会创建(您只有在使用单击按钮后才能进行图像,才会渲染/创建 layerInfo.vue)

我做了什么:

在 Map.vue 组件中,我创建了一个包含有用信息的对象映射,并将该映射发送到全局事件总线。

问题是,此时 layerinfo.vue 不存在。所以我不能听$emit 事件使用$on。(即使我试过了,我也没有得到地图)


还有一个关于事件总线的问题:我在 vue 应用程序的其他部分使用了事件总线。但是我仍然很困惑,如果事件总线进行双向数据绑定或仅单向?我的结论:全局事件总线只能用于在两个不相关的组件之间传递数据,当它们都存在时。

但我的问题是:当我不知道何时创建/呈现需要接收数据的组件时,如何在两个不相关的组件之间传递日期?

标签: javascriptvue.jsvuejs2vue-component

解决方案


推荐阅读