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 相关文章推荐
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
JS delegate与live浅析
Dec 21 Javascript
js验证身份证号有效性并提示对应信息
Oct 19 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
JavaScript截取、切割字符串的技巧
Jan 07 Javascript
javascript创建对象的几种模式介绍
May 06 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
Nov 09 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
vue实现的仿淘宝购物车功能详解
Jan 27 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
php 高性能书写
2010/12/11 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JSON.stringify 语法实例讲解
2012/03/14 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
理解javascript模块化
2016/03/28 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
JS伪继承prototype实现方法示例
2018/06/20 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python I/O与进程的详细讲解
2019/03/08 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
十佳美德少年事迹材料
2014/02/05 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
导游词书写之黄山
2019/08/06 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技