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 相关文章推荐
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
Dec 17 Javascript
JavaScript Promise 用法
Jun 14 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 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 简单数组排序实现代码
2009/08/05 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python图像处理之反色实现方法
2015/05/30 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
python db类用法说明
2020/07/07 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
院药学专业个人求职信
2013/09/21 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
校园公益广告语
2014/03/13 职场文书