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 相关文章推荐
使用onbeforeunload属性后的副作用
Mar 08 Javascript
js中将字符串转换成json的三种方式
Jan 12 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
微信小程序实现评论功能
Nov 28 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
js代码实现轮播图
May 04 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
JavaScript库 开发规则
2009/01/31 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
什么是封装
2013/03/26 面试题
Servlet的生命周期
2013/08/25 面试题
施工人员岗位职责
2013/12/12 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android