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 学习笔记一些小技巧
Mar 28 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
JavaScript事件委托技术实例分析
Feb 06 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
微信小程序商品详情页底部弹出框
Nov 22 Javascript
vue数据响应式原理知识点总结
Feb 16 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
微信access_token的获取开发示例
2015/04/16 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
python win32 简单操作方法
2017/05/25 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
详解Python中的文件操作
2021/01/14 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
销售主管岗位职责
2014/02/08 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android