【发布时间】:2017-04-24 21:35:35
【问题描述】:
在我的 index.js 中,我有一个 Vue 对象,它声明一个路由器并呈现所有页面的持有者。
const app = new Vue({
...,
render: _ => _(App),
router,
...,
el: "#app-base"});
在页面渲染器中,我的组件依次具有其子组件等。现在我想访问在最外层声明的路由器实例和operate on it in the context of one of the toppy subcomponents。
我怎样才能做到这一点?
它在上下文中并不存在。我需要以某种方式将它传递到树上吗?什么是这样做的好方法?我是否应该避免访问顶部工作组件中底部声明的实例?
【问题讨论】:
-
在这些情况下,您想使用Vuex 来管理上部组件和底部组件之间的状态。
-
您是否建议使用存储来,嗯...存储路由器的实例?可以做。其他考虑呢?在我看来,如果需要访问顶层级别的路由器,应该考虑一种不同的方法,因为这表明一开始的设计就很糟糕。我的担心是对的,还是经常发生的情况?
-
组件互通是正常的。避免了处理具有相同范围的多个组件的范围混乱......此外,Vuex 添加了一个单点突变,这使得它更易于维护。然而,这是我第一次看到一个组件与路由器通信。所以,可能还有其他选择(;
-
@KonradViltersten 你不能访问
this.route或this.$route吗? -
@saurabh 我能做到。我的问题是因为代码审查建议控制最外层组件的路由。我高度评价提出这个建议的人的能力,但同时我知道他对 Angular 和 MVC 的模式非常执着。因此我在这里问。
标签: javascript router vue-router vue.js vuex