刚刚解了一个详情返回列表时候,列表高度保持在点击进去的详情的问题,特此作个分享,但愿你们碰到相似的问题能够直接一遍过,不用卡壳(由于这个在实际项目开发中常常会用到因此分享了出来)html
Vue api 是这样说的 api连接传送门vue
dome是这样的api
通过详细查看 (话很少说,贴代码)dom
scrollBehavior (to, from, savedPosition) { if(savedPosition) { setTimeout(() => { window.scrollTo(savedPosition.x, savedPosition.y) }, 200) } }
或者结合keep-alive来达到后退时不刷新数据,前进时刷新数据的效果。ide
new VueRouter({ mode: 'history', routes: [{ path: '/foo', component: (resolve) => { require(['views/foo'], resolve) }, meta: {isKeepAlive: true} }], scrollBehavior (to, from, savedPosition) { if (savedPosition || typeof savedPosition == 'undefined') { //从第二页返回首页时savePosition为undefined //只处理设置了路由元信息的组件 from.meta.isKeepAlive = typeof from.meta.isKeepAlive == 'undefined' ? undefined : false; to.meta.isKeepAlive = typeof to.meta.isKeepAlive == 'undefined' ? undefined : true; if(savedPosition) { return savedPosition; } } else { from.meta.isKeepAlive = typeof from.meta.isKeepAlive == 'undefined' ? undefined : true; to.meta.isKeepAlive = typeof to.meta.isKeepAlive == 'undefined' ? undefined : false; } } }) <keep-alive> <router-view v-if="$route.meta.isKeepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.isKeepAlive"></router-view>
简单的分享给你们,但愿能够帮到大家ui