最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue返回上一页面时回到原先滚动的位置的方法

来源:懂视网 责编:小采 时间:2020-11-27 22:02:28
文档

vue返回上一页面时回到原先滚动的位置的方法

vue返回上一页面时回到原先滚动的位置的方法:项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。 思路:因为vue是单页面应用,进入其他页面时会销毁该页
推荐度:
导读vue返回上一页面时回到原先滚动的位置的方法:项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。 思路:因为vue是单页面应用,进入其他页面时会销毁该页

项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。
思路:因为vue是单页面应用,进入其他页面时会销毁该页面,用keep-alive不让其刷新,具体实现为:

(1).在App.vue中加入:

<template>
 <div id="app">
 <!--<router-view/>-->
 <!--页面返回不刷新-->
 <keep-alive>
 <router-view v-if="$route.meta.keepAlive"></router-view>
 </keep-alive>
 <router-view v-if="!$route.meta.keepAlive"></router-view>
 </div>
</template>

(2).index.js页面

export default new Router({
 routes: [{
 path: '/',
 name: 'index',
 component: index,
 meta: {
 keepAlive: true
 }
 },

这样在index.vue中,mounted方发只走一次,在浏览器上实现了返回原来滚动位置的目的。但是在手机上测试,发现没用,解决手机上实现目的的方法:

//在页面离开时记录滚动位置
beforeRouteLeave (to, from, next) {
 this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop
 next()
 },
//进入该页面时,用之前保存的滚动位置赋值
beforeRouteEnter (to, from, next) {
 next(vm => {
 document.body.scrollTop = vm.scrollTop
 })
 },

OK!实现!!

文档

vue返回上一页面时回到原先滚动的位置的方法

vue返回上一页面时回到原先滚动的位置的方法:项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。 思路:因为vue是单页面应用,进入其他页面时会销毁该页
推荐度:
标签: 位置 方法 VUE
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top