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 相关文章推荐
setInterval,setTimeout与jquery混用的问题
Apr 08 Javascript
JS实现拖动示例代码
Nov 01 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
javascript实现切换td中的值
Dec 05 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
JavaScript职责链模式概述
Sep 17 Javascript
javascript数据结构中栈的应用之符号平衡问题
Apr 11 Javascript
angularjs中ng-bind-html的用法总结
May 23 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
php 类自动载入的方法
2015/06/03 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
大学生毕业求职简历的自我评价
2013/10/24 职场文书
教师岗位职责
2013/11/17 职场文书
中学生操行评语大全
2014/04/24 职场文书
迎新生标语大全
2014/10/06 职场文书
导游词之无锡唐城
2019/12/12 职场文书
python 对图片进行简单的处理
2021/06/23 Python
MySQL系列之四 SQL语法
2021/07/02 MySQL
Python中的变量与常量
2021/11/11 Python
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技