Я не совсем уверен, что нажатие клавиши Enter - это то, что нужно для прокрутки вниз до нужного раздела.
Вы можете рассмотреть возможность прокрутки с помощью VueScrollTo (вы можете найти его здесь ). Тогда это будет так же просто, как вызов VueScrollTo.scrollTo()
из метода makeIt
.
makeIt(hashbang) {
this.$router.push(`#${hashbang}`);
VueScrollTo.scrollTo(`.section-${hashbang}`, 500);
}
Вот рабочий пример того, как я бы это сделал: jsfiddle .
Тогда вам все же может потребоваться отправить индекс на маршрут, чтобы перейти к выбранному разделу при просмотре точного URL.
Редактирование моего ответа, чтобы предложить другой подход:
Поскольку вы используете VueRouter, вы можете воспользоваться преимуществом свойства hash маршрутов и метода scrollBehavior()
при определении параметров маршрутизатора. Таким образом, вы можете получить что-то вроде этого:
<router-link tag="li" v-for="i in 3" :key="i" :to="{ name: 'theRouteName', hash: '#section-' + i }">Link {{i}}</router-link>
Это делает ненужными часть $router.push()
и весь метод makeIt()
.
Кроме того, вы должны добавить поведение прокрутки к конфигурации маршрутизатора:
const router = new VueRouter({
routes,
mode: "history",
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {˙
return savedPosition;
}
if (to.hash) {
return { selector: to.hash };
}
return { x: 0, y: 0 };
}
});
Я сохранил версию этого решения на jsfiddle , вы можете попробовать ее в своей песочнице или в локальной версии приложения.