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 相关文章推荐
jquery 将disabled的元素置为enabled的三种方法
Jul 25 Javascript
取选中的radio的值
Jan 11 Javascript
javascript 浏览器检测代码精简版
Mar 04 Javascript
Three.js源码阅读笔记(物体是如何组织的)
Dec 27 Javascript
基于Node的React图片上传组件实现实例代码
May 10 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
Oct 26 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 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
基于mysql的bbs设计(三)
2006/10/09 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python列表和元组的定义与使用操作示例
2017/07/26 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Python中函数的返回值示例浅析
2019/08/28 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Django如何使用redis作为缓存
2020/05/21 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
会计职业生涯规划书
2014/01/13 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript