Кажется, проблема в том, что 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);
},
},
};
демо