Я не могу понять, почему представление маршрутизатора не генерирует событие «логин».
Вот рабочий пример, с которой я играю: https://jsfiddle.net/cvtwxf6h/22/
Мне нужны 2 разных макета, один для зарегистрированного пользователя, а другой для незарегистрированного пользователя. Отображаемый макет определяется свойством logged компонента Index.
.
Когда я нажимаю «Войти» на странице входа, событие «вход» должно распространяться до компонента «Индекс», чтобы обновить свойство logged и изменить макет. По какой-то причине router-view не генерирует событие, что я делаю неправильно?
(Я просто хочу понять проблему, меня не интересуют альтернативные способы достижения этого)





Похоже, что проблема заключается в том, что router-link переходит по другому маршруту (через to = "{name: 'index'}") до генерируется событие login, которое каким-то образом приводит к потере события. Если целевой маршрут совпадает с текущим маршрутом (без навигации), событие достигает родительского компонента без проблем.
Обходным путем может быть императивная навигация с $router.push()после, создающим событие:
const LoginPage = {
template: `<router-link to = "" @click.native = "switchToLoggedPage({ name: 'index' })">Login</router-link>`,
methods: {
switchToLoggedPage(route) {
this.$emit('login');
this.$router.push(route);
},
},
};
Есть ли документ, описывающий порядок выполнения событий, навигацию по маршруту и т. д.? Что-то вроде того, что в вью документы