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与DropDownList 区别分析
Jan 01 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
关于jQuery object and DOM element
Apr 15 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
JavaScript十大取整方法实例教程
Dec 03 Javascript
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
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预定义常量
2006/12/25 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
vue ssr 指南详读
2018/06/29 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
python 禁止函数修改列表的实现方法
2017/08/03 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python3实现字符串操作的实例代码
2019/04/16 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
YUV转为jpg图像的实现
2019/12/09 Python
Python 文件数据读写的具体实现
2020/01/24 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
质量工程师岗位职责
2013/11/16 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
物理教学随笔感言
2014/02/22 职场文书
电台实习生求职信
2014/02/25 职场文书
吨的认识教学反思
2014/04/27 职场文书
民事答辩状范本
2015/05/21 职场文书
基石观后感
2015/06/12 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL