vue-scroller记录滚动位置的示例代码


Posted in Javascript onJanuary 17, 2018

问题描述:

列表页进入详情页,或者tab页切换,然后再返回列表页,希望能切换到之前滚动位置

解决问题思路:

切换到其他页面前记录位置,返回列表页的时候返回位置。这就需要借助vue-router的beforeRouteEnter和beforeRouteLeave这两个钩子去实现.

还有一种更简单粗暴的方法, vue-scroller.min.js源码中添加宽高不为零判断,实现方式见评论,是最近代码优化的时候发现的。

代码部分:

beforeRouteEnter(to,from,next){

 if(!sessionStorage.askPositon || from.path == '/'){//当前页面刷新不需要切换位置

  sessionStorage.askPositon = '';

  next();

 }else{

  next(vm => {

    if(vm && vm.$refs.scrollerBottom){//通过vm实例访问this

     setTimeout(function () {

      vm.$refs.scrollerBottom.scrollTo(0, sessionStorage.askPositon, false);

     },0)//同步转异步操作

    }

  })

 }

},

beforeRouteLeave(to,from,next){//记录离开时的位置

 sessionStorage.askPositon = this.$refs.scrollerBottom && this.$refs.scrollerBottom.getPosition() && this.$refs.scrollerBottom.getPosition().top;

 next()

},

需要注意的点:

1.熟悉vue-router和vue-scroller的api

2.beforeRouteEnter的时候,是无法通过this去访问vue实例的,需要借助于vm

3.setTimeout 0 的使用

等下周发版的时候,我贴上链接,可以体验下效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
Ext JS添加子组件的误区探讨
Jun 28 Javascript
jquery ui bootstrap 实现自定义风格
Nov 14 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
js实现移动端微信页面禁止字体放大
Feb 16 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
JavaScript实现单图片上传并预览功能
Sep 30 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
JS中的继承操作实例总结
Jun 06 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
Jan 17 #Javascript
详解微信小程序审核不通过的解决方法
Jan 17 #Javascript
swiper动态改变滑动内容的实现方法
Jan 17 #Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
Jan 17 #Javascript
使用Vue开发一个实时性时间转换指令
Jan 17 #Javascript
angularjs 页面自适应高度的方法
Jan 17 #Javascript
VueJs监听window.resize方法示例
Jan 17 #Javascript
You might like
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
Python类属性与实例属性用法分析
2015/05/09 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python实现媒体播放器功能
2018/02/11 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python实现画图软件功能方法详解
2020/07/28 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
Why do we need Unit test
2013/01/03 面试题
公务员培训自我鉴定
2013/09/19 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android