1 回答

TA贡献1877条经验 获得超1个赞
1.在router.js里面,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
//真正起作用的是这里,else里面的if删除了,免得误导
return savedPosition
} else {
return { x: 0, y: to.meta.savedPosition || 0 }
}
},
2.在router.js里面需要记录位置的单页面里面
meta: {
title: '列表页',
keepAlive:true
},
3.App.vue里面
<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>
这样写的意义就是不缓存所有页面,哪个地方写了 keepAlive:true,哪个地方就记录位置(加缓存)
4.位置确实记录上了(加缓存,返回不刷新页面),也就是说,返回不触发created,所以有些页面需要返回触发的东西都写在activated里面。其实整个过程很简单,代码也很干练,因为这是路由自带的功能,只不过之前没有发现罢了
添加回答
举报