element的el-table中记录滚动条位置的示例代码


Posted in Javascript onNovember 06, 2019

场景重现:在项目中使用了keep-alive来缓存组件,且使用element中的table列表,但在项目中是对table进行了二次封装,跟页码合在了一起。按照网上的直接对scrollTop赋值,赋值失败了,还要加上setTimeout才能成功,虽然实现了功能,但是不知道原因,可以的话希望有人能解答。

废话少说,直接赋上代码。

<template>
 <div class="table">
  <el-table ref="table">
  ...
  </el-table>
  <wp-pager @page-change="pageChange" :total="total" v-if="pager" v-bind="$attrs" v-on="$listeners"></wp-pager>
 </div>

</template>
<script>
 import { WpPager } from '../pager'

 export default {
  data() {
   return {
    scrollTop: null
   }
  },
  activated() {
   this.saveScroll()
  },
  mounted() {
   
  // 监听滚动条的位置 
  this.$refs.table.bodyWrapper.addEventListener('scroll', (res) => {
    let height = res.target
    this.scrollTop = height.scrollTop
   },false)
  },

  beforeDestroy() {
   this.$refs.table.bodyWrapper.removeEventListener('scroll', (res) => {
    let height = res.target
    this.scrollTop = height.scrollTop
   },false)
  },
  
  methods: {
  // 当页码改变的时候滚动条重新到顶部
   pageChange (page) {
    this.$emit('page-change', page)
    this.scrollTop = 0
    this.saveScroll()
   },

// 这里如果直接赋值给this.$el.querySelector('.el-table__body-wrapper').scrollTop会失效,需要加上setTimeout才行。
   saveScroll() {
    this.$nextTick(()=> {
    setTimeout(() => {
     var scrollTop = this.$el.querySelector('.el-table__body-wrapper')
     scrollTop.scrollTop = this.scrollTop
     }, 13)
    })
   }
  }
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
js与C#进行时间戳转换
Nov 14 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
May 07 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 Javascript
webpack是如何实现模块化加载的方法
Nov 06 #Javascript
node读写Excel操作实例分析
Nov 06 #Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 #Javascript
electron 安装,调试,打包的具体使用
Nov 06 #Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 #Javascript
在vue中阻止浏览器后退的实例
Nov 06 #Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 #Javascript
You might like
使用php实现截取指定长度
2013/08/06 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
python实现自动发送报警监控邮件
2018/06/21 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
django中的数据库迁移的实现
2020/03/16 Python
Django xadmin安装及使用详解
2020/10/26 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
招股说明书范本
2014/05/06 职场文书
产品包装策划方案
2014/05/18 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
大连导游词
2015/02/12 职场文书
法律讲堂观后感
2015/06/11 职场文书
赡养老人协议书范本
2015/08/06 职场文书
聘任合同书
2015/09/21 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
Linux磁盘管理方法介绍
2022/06/01 Servers