-
为路由定义
scrollTop
meta元信息来记住每个路由的位置
{ path: '/home', name: 'home', meta: { title: '首页', scrollTop: 0 }, component: () => import('@/views/home.vue'), },
-
配置路由守卫,在每个路由前将当前页面滚动距离赋值给他们的
scrollTop
router.beforeEach((to, from) => { to.meta.scrollTop = document.documentElement.scrollTop; });
-
通过
scrollBehavior
在每次进入路由后将scrollTop
元信息赋值给当前页面的document.documentElement.scrollTop
scrollBehavior(to, from, savedPosition) { return { top: from.meta.scrollTop, left: 0 }; },
-
注意:
-
当页面数据是从后端请求的时候,需要通过
keepAlive
缓存当前页面数据,否则页面没有数据则不能滚动。
-
目前该方法只能缓存一级路由的位置。
-