【发布时间】:2020-03-17 17:37:59
【问题描述】:
在主页上,我想在新的 Vue(已转换)视图中导航到我的一个页面。 用户在“关闭”此页面后最终回到上次滚动的位置。
这可以通过将 Vue 原生的 scrollBehavior 添加到 VueRouter 来实现。
这就是我要去的地方:
const router = new VueRouter({
scrollBehavior: (to, from, savedPosition) => new Promise((resolve) => {
const position = savedPosition || {};
if (!savedPosition) {
if (to.hash) {
position.selector = to.hash;
}
if (to.matched.some((m) => m.meta.scrollToTop)) {
position.x = 0;
position.y = 0;
}
}
router.app.$root.$once('triggerScroll', () => {
router.app.$nextTick(() => resolve(position));
});
}),
routes,
[]
但是!这意味着在主页上向下滚动会导致在新页面上的相同滚动位置结束。
我想防止这种情况发生。新页面在y = 0 打开。但!无需重置主页上的先前滚动位置。
所以当点击后退按钮时,它会将用户返回到主页上点击的元素的滚动位置。
知道我该如何解决这个问题吗?
【问题讨论】:
标签: javascript vue.js