Vue.js Vue路由器视图事件传播

Vue.js Vue路由器视图事件传播,vue.js,vuejs2,vue-router,Vue.js,Vuejs2,Vue Router,我不明白路由器视图为什么不发出“登录”事件。 这是我正在玩的小提琴: 我想要2个不同的布局,一个用于登录用户,另一个用于未登录用户。要显示的布局由索引组件的logged属性决定。 当我在登录页面中单击“登录”时,“登录”事件应传播到索引组件,以更新logged属性并更改布局。出于某种原因,路由器视图没有发出事件,我做错了什么 (我只是想了解这个问题,我对实现这一点的其他方法不感兴趣)问题似乎是路由器链接在发出登录事件之前导航到不同的路由(通过到=“{name:'index'}”),这导致事件以某

我不明白路由器视图为什么不发出“登录”事件。
这是我正在玩的小提琴:

我想要2个不同的布局,一个用于登录用户,另一个用于未登录用户。要显示的布局由索引组件的
logged
属性决定。
当我在登录页面中单击“登录”时,“登录”事件应传播到索引组件,以更新
logged
属性并更改布局。出于某种原因,路由器视图没有发出事件,我做错了什么


(我只是想了解这个问题,我对实现这一点的其他方法不感兴趣)

问题似乎是
路由器链接
在发出
登录
事件之前导航到不同的路由(通过
到=“{name:'index'}”
),这导致事件以某种方式丢失。如果目标路由与当前路由相同(无导航),则事件将毫无问题地到达父组件

解决方法是在发出事件后强制导航:

const LoginPage = {
  template: `<router-link to="" @click.native="switchToLoggedPage({ name: 'index' })">Login</router-link>`,
  methods: {
    switchToLoggedPage(route) {
      this.$emit('login');
      this.$router.push(route);
    },
  },
};
const LoginPage={
模板:`Login`,
方法:{
转辙机日志页(路线){
这是。$emit('login');
此。$router.push(路由);
},
},
};

是否有任何文档描述事件的执行顺序、路线导航等。。?类似于我的那个