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 相关文章推荐
用javascript父窗口控制只弹出一个子窗口
Apr 10 Javascript
高亮显示web页表格行的javascript代码
Nov 19 Javascript
使用javascript获取flash加载的百分比的实现代码
May 25 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 Javascript
vue 中的keep-alive实例代码
Jul 20 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 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
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP微信支付开发实例
2016/06/22 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
JS解析XML实例分析
2015/01/30 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
详解vue axios用post提交的数据格式
2018/08/07 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
小米5s微信跳一跳小程序python源码
2018/01/08 Python
Python中的TCP socket写法示例
2018/05/11 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
党支部书记四风问题整改措施
2014/09/24 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL