vue中进入详情页记住滚动位置的方法(keep-alive)

2019-11-14,,,,

> 有时业务提出这样一个需求 就是从商品页面进入到列表详情页 要保存当前滚动的位置,这里我就想到了keep-alive

1.首先在路由中引入需要的模块

{ 
path: ‘/scrollDemo', 
name: ‘scrollDemo', 
meta: { 
keepAlive: true // 需要缓存 
}, 
component: resolve => { require([‘../view/scrollDemo.vue'], resolve) } 
}

2.在App.vue中设置缓存组件

  <keep-alive>  // 缓存组件跳转的页面
    <router-view v-if="$route.meta.keepAlive" class="ui-view" transition-mode="out-in"></router-view>
  </keep-alive> 

 // 非缓存组件跳转页面
 <router-view v-if="!$route.meta.keepAlive" class="ui-view" transition-mode="out-in"></router-view>

3.在页面注册对应的事件

1. 在return中定义一个初始值 scroll

2. 在mouted中 ,mouted中的方法代表dom已经加载完毕

window.addEventListener('scroll', this.handleScroll);

3.methods 用于存放页面函数

   handleScroll () {
    this.scroll = document.documentElement && document.documentElement.scrollTop

    console.log(this.scroll)
   }

4. activated 为keep-alive加载时调用

   activated() {
     if(this.scroll > 0){
      window.scrollTo(0, this.scroll);
      this.scroll = 0;
      window.addEventListener('scroll', this.handleScroll);
     }
  }

5.deactivated 页面退出时关闭事件 防止其他页面出现问题

  deactivated(){
   window.removeEventListener('scroll', this.handleScroll);
  }

以上这篇vue中进入详情页记住滚动位置的方法(keep-alive)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持北冥有鱼。

您可能感兴趣的文章:

  • vue 使某个组件不被 keep-alive 缓存的方法
  • 解决vue keep-alive 数据更新的问题
  • vue2使用keep-alive缓存多层列表页的方法
  • 基于vue中keep-alive缓存问题的解决方法
  • 详解关于Vue2.0路由开启keep-alive时需要注意的地方
  • Vue中 key keep-alive的实现原理
  • vue解决使用webpack打包后keep-alive不生效的方法
  • vue 中的keep-alive实例代码
  • vue.js内置组件之keep-alive组件使用
  • vue keep-alive请求数据的方法示例
  • vue中keep-alive的用法及问题描述

《vue中进入详情页记住滚动位置的方法(keep-alive).doc》

下载本文的Word格式文档,以方便收藏与打印。