element的el-table中记录滚动条位置的代码实例
人气:0场景重现:在项目中使用了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>
您可能感兴趣的文章:
- Vue-cli4 配置 element-ui 按需引入操作
- Vue + Element-ui的下拉框el-select获取额外参数详解
- vue用elementui写form表单时,在label里添加空格操作
- 快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
- vue+ElementUI 关闭对话框清空验证,清除form表单的操作
- vue+element获取el-table某行的下标,根据下标操作数组对象方式
- el-table树形表格表单验证(列表生成序号)
- vue el-table实现自定义表头
- vue el-table实现行内编辑功能
- VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
- vue修改Element的el-table样式的4种方法
加载全部内容