【发布时间】:2018-12-27 19:42:16
【问题描述】:
我的“搜索”(父)视图中有 3 个组件; 'SearchForm'、'ResultList'、'DetailPage'。当我收到后端的响应时,我从 SearchForm 切换到 ResultList。
<keep-alive>
<component v-bind:is="currentComponent"></component>
</keep-alive>
当在我的“SearchForm”中收到响应时,我会将其保存到 searchBus;
searchBus.$emit('searchIssue', response.data);
然后,在我的 ResultList 中,我想再次检索它并显示结果;
mounted() {
searchBus.$on(['searchIssue'], (search) => {
this.table_items = search;
});
}
我会显示一个加载动画(也是一个组件),直到响应完全加载并显示 ResultList。
由于Vue lifecycle,当所有组件都显示在一个视图中时,一切正常,因为它们在总线更新时已经在监听。
我应该选择其他方法吗?使用v-show 或将响应传递回父级并使用道具再次插入(Idk,如果它可以工作,因为并非所有组件都具有相同的道具)。
有没有办法使用总线?如何解决它,使其成为一个线性层次结构并仍然隐藏不相关的组件? (SearchForm -> ResultList -> DetailPage)
【问题讨论】:
标签: vue.js vuejs2 vue-component