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 相关文章推荐
splice slice区别
Oct 09 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
Jquery遍历Json数据的方法
Apr 20 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
Nov 11 Javascript
javascript实现自动填写表单实例简析
Dec 02 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
May 12 Javascript
jQuery通过deferred对象管理ajax异步
May 20 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 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
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
node网页分段渲染详解
2016/09/05 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python的randrange()方法使用教程
2015/05/15 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
python爬取招聘要求等信息实例
2020/11/20 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
销售人员工作自我评价
2014/09/21 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
公司借款担保书
2015/09/22 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript