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 Ajax使用 全解析
Dec 15 Javascript
解决遍历时Array.indexOf产生的性能问题
Jul 03 Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
Sep 01 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
Feb 27 Javascript
js实现登录与注册界面
Nov 01 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
微信小程序实现笑脸评分功能
Nov 03 Javascript
回顾Javascript React基础
Jun 15 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(1) php开发环境配置
2010/02/15 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
深入PHP FTP类的详解
2013/06/13 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
关于Vue中$refs的探索浅析
2020/11/05 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
python安装Scrapy图文教程
2017/08/14 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
python实现的生成word文档功能示例
2019/08/23 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
大学毕业生自我鉴定
2013/11/05 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
个性与发展自我评价
2014/02/11 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
2015年教师节活动总结
2015/03/20 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电