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 相关文章推荐
字符串的replace方法应用浅析
Dec 06 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
解析Jquery的LigerUI如何实现文件上传
Jul 09 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
基于javascript制作微信聊天面板
Aug 09 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 jQuery
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
详解VUE项目中安装和使用vant组件
Apr 28 Javascript
JS根据json数组多个字段排序及json数组常用操作
Jun 06 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
Apr 11 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无限分类源码分享(思路不错)
2011/10/13 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
法律六进活动方案
2014/03/13 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
赔偿协议书范本
2014/09/12 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书