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 相关文章推荐
IE 条件注释详解总结(附实例代码)
Aug 29 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
带左右箭头图片轮播的JS代码
Dec 18 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
Oct 30 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
Mar 16 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
微信小程序实现留言板
Oct 31 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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
初品cakephp 入门基础
2012/02/16 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
PHP编程风格规范分享
2014/01/15 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
提高jQuery性能的十个诀窍
2013/11/14 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
Python fileinput模块使用介绍
2014/11/30 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python+django加载静态网页模板解析
2017/12/12 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
python -v 报错问题的解决方法
2020/09/15 Python
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
IBatis持久层技术
2016/07/18 面试题
幼儿园消防安全制度
2014/01/26 职场文书
招聘专员岗位职责
2014/03/07 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书