- App.vue文件配置:
<template>
<div id="app">
<!--页面返回不刷新-->
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
- route/index.js文件配置:
var router = new Router({
routes: [
{
path: '/',
name: 'login',
component: resolve => require(['@/components/login/login'], resolve)
}, {
path:'/details',
name:'details',
meta: {keepAlive: true}, //开启缓存
component:resolve=>require(['@/components/proxy/details'],resolve)
}
]
})
- details.vue显示页面配置(方法与computed、methods平级):
//在页面离开时记录滚动位置
beforeRouteLeave(to, from, next) {
console.log("beforeRouteLeave");
this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop
// console.log("beforeRouteLeave scrollTop ", this.scrollTop);
next()
},
//进入该页面时,用之前保存的滚动位置赋值
beforeRouteEnter(to, from, next) {
console.log("beforeRouteEnter");
next(vm => {
document.body.scrollTop = vm.scrollTop;
document.documentElement.scrollTop = vm.scrollTop;
})
}