vue实现详情返回列表记录原始滚动位置

实现思路:

1、 页面使用内置组件 keep-alive 实现缓存
2、获取列表的滚动距离 
3、返回列表页面恢复高度

 

在路由文件中添加meta信息,将keepalive设置为true

1
2
3
4
5
6
7
8
{
      path: '/pubCustomerPage',
      name: 'pubCustomerPage',
      meta: {
        keepalive: true
      },
      component: () => import('../module/customerTotal/pubCustomerPage.vue'),
    },

  

 监听列表中滚动的距离,在activated钩子中调用并做记录

1
2
3
4
5
6
7
8
9
10
11
12
activated() {
        this.listenerFunction();
        this.$refs.scrollbox.scrollTop = this.scrollTop;
},
methods: {
        listenerFunction(e) {
            document.addEventListener("scroll", this.getScroll, true);
        },
        getScroll() {
            this.scrollTop = this.$refs.scrollbox.scrollTop;
        },    
}

  

在deactivated钩子在移除监听

1
2
3
deactivated() {
     document.removeEventListener("scroll", this.listenerFunction);
}

  

如果从新的页面进来时候需要把滚动的值初始化

1
2
3
if (this.fromPath == 'customerTotal' || this.fromPath == "") {
     this.$refs.scrollbox.scrollTop = 0;
}

  

posted @   紫诺花开  阅读(772)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-01-30 element表格实现复选框单选
2020-01-30 Vue Cli3配置文件优化处理
2019-01-30 vue常用指令
2019-01-30 vue实现简单的全选、反选、不选
点击右上角即可分享
微信分享提示