vue通过滚动行为实现从列表到详情,返回列表原位置的方法


Posted in Javascript onAugust 31, 2018

vue项目滚动行为

场景:项目中,从列表进入详情,再从详情返回列表时,想直接定位到离开时的位置。

列表页点击某一个进入到详情页:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

进入到详情页:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

从详情页点击返回到列表页到离开的位置:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

实现方式一:html5 history模式

1在路由设置router/index.js中,设置组件的元信息被缓存。(keepAlive:true),并修改mode模式为history。

export defaultnewRouter({
mode: 'history' // 默认hash
 routes: [
// ***************** 列表组件 ******************** //
 {
  path: '/',
  name: list,
  component: list,
  meta: {
  keepAlive: true
  }
 }

2该组件路由被匹配显示的方式:

<keep-alive>
 <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

实现方式二:监听scrollTop, js原始写法(组件同样需要设置缓存keep-alive)

1在组件的data中定义一个scrollTop属性,用来记录监听的scrollTop。

2在created或者mounted钩子里添加监听事件。

mounted () {
 document.addEventListener('scroll',this.handelscroll)
},

3在methods方法中定义这个handelscroll方法,并将监听的scrollTop赋值给data中的scrollTop()

handelscroll() {
 this.scrollTop = document.body.scrollTop|| document.documentElement.scrollTop || window.pageYOffset
},

4在deactivated钩子里记录当前的scrolltop(即从列表页进入详情页)

deactivated (){
 sessionStorage.setItem('scrollTop',this.scrollTop)
},

这里存到了sessionStorage里边,也可以使用状态管理。

5在activated钩子里,定位保存的scrollTop(即从详情页返回列表页)

activated () {
 document.body.scrollTop =document.documentElement.scrollTop = window.pageYOffset =sessionStorage.getItem('scrollTop')
},

以上这篇vue通过滚动行为实现从列表到详情,返回列表原位置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
jquery一般方法介绍 入门参考
Jun 21 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
js简单获取表单中单选按钮值的方法
Aug 23 Javascript
react-native中ListView组件点击跳转的方法示例
Sep 30 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 #Javascript
javascript闭包的使用之按钮切换功能
Aug 30 #Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 #Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 #Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 #Javascript
vue-router动态设置页面title的实例讲解
Aug 30 #Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 #Javascript
You might like
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
Javascript中replace()小结
2015/09/30 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
python实现的重启关机程序实例
2014/08/21 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python多进程原理与用法分析
2018/08/21 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
为什么需要版本控制?
2013/08/08 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
大学生村官任职感言
2014/01/09 职场文书
新领导上任欢迎词
2014/01/13 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
免职通知
2015/04/23 职场文书
婚庆主持词大全
2015/06/30 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
Python OpenGL基本配置方式
2022/05/20 Python