vue组件获取 scrollTop焦点 和设置scrollTop 来保存组件的数据和滚动位置
2020-07-18 04:33
1936 查看
我的项目中使用了vue和 vant 其中封装的组件有点多,先要的效果就是 缓存list数据并且下拉数据时候 当 点击item项目时候 按回退时候 滚轮还是在原来位置
其中 数据缓存不在这里说了使用的是
上代码
这是封装的组件内部是什么不重要 主要是ref=“articleListBox”
<template> <div class="article-list" ref="articleListBox"> <van-pull-refresh v-model="refreshing" @refresh="onRefresh" :success-text="suText" success-duration="700"> <van-list ref="list" v-model="loading" :finished="finished" :error.sync="error" error-text="请求失败,点击重新加载" finished-text="没有更多了" @load="onLoad" > <article-item v-for="(item,index) in list" :key="index" :article="item"/> <!--<van-cell v-for="(item,index) in list" :key="index" :title="item.title"/>--> </van-list> </van-pull-refresh> </div> </template>
关键代码在 mounted 可以获取 监听scroll
mounted () { // 通过$refs获取dom元素 this.box = this.$refs.articleListBox // 监听这个dom的scroll事件 this.box.addEventListener('scroll', () => { console.log(' scroll ' + this.$refs.articleListBox.scrollTop) this.scTop = this.$refs.articleListBox.scrollTop }, false) },
在离开页面时候会调用keep-alive钩子函数把数据保存到本地
deactivated () { //当页面被缓存且离开这个页面时候触发 把查询的高度保存到本地 setItem('scTop', this.scTop) },
必须在activated 中设置scrollTop 因为你的容器要有数据才可以设置scrollTop
(keepalive缓存了数据 当再次进入这样页面时候会走activated 构造函数)
activated () { /* * 把本地高度设置给 组件 必须在activated中设置 因为容器要先有数据(高度)才可以scrollTop * */ this.$refs.articleListBox.scrollTop = getItem('scTop') },
最后实现就是保存 list数据和滚动位置
相关文章推荐
- 获取已经安装APK的路径 多进程Preferences数据共享 泛型ArrayList转数组 保存恢复ListView当前位置 调用便携式热点和数据共享设置 格式化 文件夹排
- scrollTop:在JavaScript中获取当前页面的滚动位置
- scrollTop:在JavaScript中获取当前页面的滚动位置
- 各浏览器对于获取文档水平及垂直方向滚动条位置(scrollLeft、scrollTop)时的参考元素存在差异
- 小程序scroll-view组件 设置横向滚动条位置 scroll-left 无效问题
- 各浏览器页面滚动值(scrollTop)的获取与设定。
- 关于JTable设置数据源以及获取焦点行数据问题
- 浅谈jQuery页面的滚动位置scrollTop、scrollLeft
- 获取滚动文本框TextArea焦点位置信息
- vue组件数据传递、父子组件数据获取,slot,router路由功能示例
- Android--Android教程]EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- 获取设置数据和保存设置的代码
- EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- Vue父子组件通信之父组件主动获取子组件的数据和方法(二)
- [Android教程]EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- 获取兼容性的滚动scrollTOP-LEFT值
- 一个保存数据的方法(可以切换存放的位置,可以设置密钥)
- 浅谈jQuery页面的滚动位置scrollTop、scrollLeft
- android listview 每一项都是edittext 导致的坑爹问题 内容的保存和焦点,光标位置的设置
- JavaScript基础 获取整个div的宽度 不含滚动条的宽度 向下滚动了多少px offsetWidth scrollWidth scrollTop