【vue】监听table水平滚动条切换tab后还原位置

news2024/10/11 11:44:23

有个需求就是切换tab后,原先的table水平滚动条要还原位置(如下图),先说下思路,大致就是 切出页面时 把滚动距离保存到Storage 中,切回来时在恢复
在这里插入图片描述
直接上代码
首先table ref指定一下ref="jtable"
vue methods中写好两个方法

handleScroll() { //滚动的事件
        let scrollPosition = this.$refs.jtable.$el.querySelector('.ant-table-body').scrollLeft;
        localStorage.setItem("PortMore-scrollLeft", scrollPosition);
    },
    //定位到原来滚动条的位置
    restoreScrollPosition() {
        let scrollX = localStorage.getItem('PortMore-scrollLeft');
        if (scrollX) {
            this.$refs.jtable.$el.querySelector('.ant-table-body').scrollLeft = scrollX;
        }
    },

注意,如果是只涉及几个页面,可以像我一样直接指定存入localStorage中的key是PortMore-scrollLeft,多个的话可以通过路由路径去拼接,比如localStorage.setItem(this.$route.fullPath+"-scrollLeft", scrollPosition);
接下来就是几个触发事件

watch: {
	//路由变更的时候恢复保存的滚动位置
    '$route'(nv, ov) {
         this.restoreScrollPosition();

    },
  },
  beforeDestroy() {
     // 页面关闭前触发的逻辑
     localStorage.removeItem("PortMonitor-scrollLeft");
  },

如果你的tab页面很简单的话,推荐使用这个方法

beforeRouteLeave(to, from, next) {
        this.handleScroll();
        //指定操作要放在离开路由前
        this.routeThis = this.$route.fullPath;
        next();
    },

注意,这时候你会发现beforeDestroy获取不到之前的路由,所以我是这样拼接的

beforeDestroy() {
        // 页面关闭前触发的逻辑
        localStorage.removeItem(this.routeThis + "-scrollLeft");
    },

这个routeThis是定义在上边data里的

data() {
        return {
            routeThis: "",
        };
    },

但是,如果你的tab页面里又套了两个小tab页面,建议老老实实在小页面mounted里写上以下代码

this.$nextTick(() => {
       const tableComponent = this.$refs.jtable;
       if (tableComponent) {
          const tableContainer = tableComponent.$el.querySelector('.ant-table-body');
          tableContainer.addEventListener('scroll', this.handleScroll);
       }
    })

这个是给table加上一个滚动监听事件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Python编写你的第一个算法交易程序

背景 Background ​ 最近想学习一下量化金融,总算在盈透投资者教育(IBKRCampus)板块找到一篇比较好的算法交易入门教程。我在记录实践过程后,翻译成中文写成此csdn博客,分享给大家。 ​ 如果你的英语好可以直接看原文…

秋日相邀!与 deepin 一起逛 OSCAR 开源产业大会开源市集

查看原文 10 月 16 日,“2024 OSCAR 开源产业大会”将在北京开幕。这场大会不仅是开源领域一年一度的盛会,更是一个汇集众多行业专家、技术领袖和开源爱好者的交流平台。大会将围绕开源技术的最新发展、产业应用、风险治理以及未来趋势等议题展开深入讨…

TCP连接重置,到底是怎么回事?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 上午好,我的网工朋友 连接建立失败并不仅仅包含无响应问题,还有一种常见的情况,即RST(Reset&…

kubernetes中微服务部署

微服务 问:用控制器来完成集群的工作负载,那么应用如何暴漏出去? 答:需要通过微服务暴漏出去后才能被访问 Service 是一组提供相同服务的Pod对外开放的接口借助Service,应用可以实现服务发现和负载均衡Service 默认只…

网优学习干货:王者荣耀游戏用户体验洞察及质差识别(1)

一、课题背景 二、课题目的 针对热点游戏(王者荣耀)进行业务质量评估,并通过对端到端定界分析,从无线、核心网、互联网维度识别影响用户体验关键因素,为游戏用户的体验优化提供依据。 三、课题实施进度 王者荣耀卡顿特…

基于STM32的智能门锁

基于STM32的智能门锁 在现代家居安全领域,智能门锁已经成为提升居住安全和便利性的关键技术之一。本文将介绍一个基于STM32微控制器的智能门锁项目,该项目集成了多种模块,包括步进电机、矩阵键盘、OLED显示屏、蓝牙模块和RFID刷卡模块&#…

小程序项目实践(一)--项目的初始化以及前期的准备工作

目录 1.起步 1.1 uni-app 简介 1.2 开发工具 1.2.1 下载 HBuilderX 1.2.2 安装 HBuilderX 1.2.3 安装 scss/sass 编译 1.2.4 快捷键方案切换 1.2.5 修改编辑器的基本设置 1.3 新建 uni-app 项目 1.4 目录结构 1.5 把项目运行到微信开发者工具 1.6 使用 Git 管理项目 …

DDIM扩散模型相关原理

DDIM扩散模型相关原理 Denoising Diffusion Implicit Models 论文下载地址:https://arxiv.org/abs/2010.02502

CentOS 安装 nvm+Node.js

CentOS 安装 nvmNode.js 文章目录 CentOS 安装 nvmNode.js一、安装nvm①:更新系统包②:安装依赖③:安装 NVM④:配置 NVM⑤:验证安装 二、安装 Node.js①:查看可安装版本②:安装(指定…

腾讯广告-web转化数据api自归因对接记录

文章目录 前言一、参考文档记录二、使用步骤1.整体流程(可以根据官方最新的文档来做)2.关于上报代码参考3.关于uniapp网页在history模式下接收不到url参数的问题 总结 前言 项目中需要做对扫码加粉的监测,于是用到了腾讯广告的Web转化数据AP…

七载耕耘,全面盘点:Zabbix实战文章精华大全分享

在数字化转型的加速推进中,IT监控系统的稳定与高效性已成为企业IT运维战略的核心要素。Zabbix作为开源监控领域的佼佼者,凭借其卓越的功能集成、灵活的定制能力以及相对经济的运营成本,成功吸引了全球范围内众多企业的目光。 在国内&#xf…

zynq sdk裸机开发调试问题,不能进入中断问题

zynq sdk裸机开发总是时不时的就不能进入中断了, 找来找去的找不到原因. 后来我经过多次尝试. 将问题限位到非常小的范围. 只用了最普通的内部定时器, 开启中断也是偶尔会进去偶尔会进不去. 我的版本是 2018.3 后来多次尝试慢慢的摸索出经验规律, 只要修改过代码重新开始调试.就…

Math.js 基础使用:常用的数值操作

一. 引言 在进行数学计算和处理时,JavaScript 提供了许多强大的工具函数,其中最常用且广泛应用的就是 Math 对象中的函数。无论是进行简单的数值操作还是复杂的数学运算,Math 工具函数都能发挥出强大的作用。 本篇文章将带您探索 JavaScrip…

汽车3d动效的作用!云渲染实现3d动效

在汽车营销领域,3D动效技术以其独特的视觉冲击力和交互体验,正成为吸引消费者注意力的新利器。而云渲染技术的应用,更是让这些动效如虎添翼,实现了高效、低成本的3D视觉内容制作与分享。本文将探讨汽车3D动效的作用,并…

闯关leetcode——70. Climbing Stairs

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/climbing-stairs/description/ 内容 You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you cl…

GPT 生成绘画_Java语言例子_超详细

基于spring ai :简化Java AI开发,提升效率与维护性 过去在使用Java编写AI应用时,主要困境在于缺乏统一的标准化封装,开发者需要针对不同的AI服务提供商查阅各自独立的文档并进行接口对接,这不仅增加了开发的工作量&am…

Halcon Tuple数组的增删查改

read_image (Image33, E:/Halcon数据/资源图片/33.png) dev_get_window (WindowHandle) dev_set_draw (margin) get_image_size (Image33, Width, Height) query_font (WindowHandle, Font) FontWithSize : Font[0]-30 set_font (WindowHandle, FontWithSize) 增加 NewTT1T2 …

学习如何将Spring Boot Jar包注册成Windows服务

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在开发Spring Boot应用时,我们通常通过命令行或IDE手动启动项目。然而,在生产环境中,为了提升效率和稳定性,我们更希望应用能够自动启动,并且作为Wi…

2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识上(分值10+)

第5章软件工程 目录 前言第5章 软件工程基础知识(上)(分值10)5.1 软件工程概述5.1.4 软件过程 5.2 软件过程模型5.2.1 瀑布模型 (Waterfall Model)5.2.2 增量模型5.2.3 演化模型5.2.4 喷泉模型(Water Fountain Model&a…

java继承-cnblog

类的继承 继承本身 一个类要继承另一个类需要使用关键字extends 关键字extends的使用 class a extend b{}由于java只支持单继承,所以同时继承多个父类是错误的 在创造子类对象时,会先执行父类的构造方法,再执行子类的构造方法 举例说明 …