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 相关文章推荐
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
angular简介和其特点介绍
Jan 29 Javascript
jquery模拟alert的弹窗插件
Jul 31 Javascript
javascript事件处理模型实例说明
May 31 Javascript
jQuery实现的自动加载页面功能示例
Sep 04 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
AngularJS的ng-click传参的方法
Jun 19 Javascript
element-ui表格数据转换的示例代码
Aug 24 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 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
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
jquery获取checkbox的值并post提交
2015/01/14 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
JS中的BOM应用
2018/02/02 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
通俗讲解python 装饰器
2020/09/07 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
业务员薪酬管理制度
2014/01/15 职场文书
校本教研工作制度
2014/01/22 职场文书
优秀部门获奖感言
2014/02/14 职场文书
老干部工作先进事迹
2014/08/17 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
求职自我评价范文100字
2014/09/23 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
学生评语集锦
2015/01/04 职场文书
2015年副班长工作总结
2015/05/15 职场文书
优质护理心得体会
2016/01/22 职场文书
《鲸》教学反思
2016/02/23 职场文书
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL