博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue页面位置问题
阅读量:7251 次
发布时间:2019-06-29

本文共 1033 字,大约阅读时间需要 3 分钟。

问题1:在vue这种单页应用中,如果你在a页面滚动了一段距离后,此时前往b页面后,b页面也会停留在a页面的滚动位置。

解决:

routes: [        {              path: '/detail',              name: 'Detail',              component: resolve => require(['@/pages/detail'], resolve)        }    ],scrollBehavior (to, from, savedPosition) {    if (savedPosition) {                  return savedPosition        } else {                if (from.meta.keepAlive) {                       from.meta.savedPosition = document.body.scrollTop;                }                  return { x: 0, y: to.meta.savedPosition || 0 }        }  }复制代码复制代码

scrollBehavior是路由提供的基础功能,这段函数写的是:

1.如果通过浏览器自带的前进后退按钮切换的路由,那么会自动使用浏览默认的回滚上次页面的浏览位置。

2.如果是通过vue路由进行的页面切换。例如a前往b,首先判断a是不是通过keep-alive缓存的组件,如果是,则在a路由的meta中添加一个savedPosition字段,并且值为a的滚动位置。最后return的是页面需要回滚的位置。如此一来,如果打开一个页面,该页面的组件路由中meta.savedPosition为undefined的话,则页面滚动到(0,0)的位置,这样解决了问题1。那么如果打开一个页面,它的路由的meta.savedPosition有值的话,则滚动到上次浏览的位置,因为meta.savedPosition保存的就是上次浏览的位置。

文章来源:https://juejin.im/post/5b2ce07ce51d45588a7dbf76

转载于:https://juejin.im/post/5cc259fbe51d456e8a12eff0

你可能感兴趣的文章
项目管理之怒目相争,外行能不能领导内行做软件开发?
查看>>
扬帆起航,再踏征程(四)
查看>>
Objective-C基础笔记(2)@property和@synthesize
查看>>
Android系统开发(1)——GCC编译器的编译和安装过程
查看>>
详解Python模块导入方法
查看>>
mysql一些权限相关操作,数据库可以远程连接或者说用IP地址可以访问
查看>>
关于c#(vs)dategridview控件继承不能修改的问题
查看>>
JAVA通过使用sort方法排序
查看>>
跨域CORS 、第二章
查看>>
一秒去除Win7快捷方式箭头
查看>>
Linux上Simplescalar/ARM的安装和运行文档
查看>>
中断是CPU的机制
查看>>
DoD and DoR
查看>>
Python学习笔记【第二篇】:运算符、比较、关系运算符
查看>>
golang 资源
查看>>
关于FileFOutputStream应用中的FileNotFoundException问题
查看>>
[产品设计] - 设计理念
查看>>
关于gitblit成功启动,但在阿里云外网地址无法访问的问题
查看>>
C++访问MySql
查看>>
1056. 组合数的和(15)
查看>>