当前位置: 移动技术网 > IT编程>脚本编程>vue.js > vue返回上一页面时回到原先滚动的位置的方法

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

2019年01月04日  | 移动技术网IT编程  | 我要评论

余额宝好不好,枪手王妃,刘思琦泳装

项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。
思路:因为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!实现!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网