zoukankan      html  css  js  c++  java
  • vue缓存页面和返回跳到相应的位置。

    运用场景: 需要缓存的页面, 比如非常常见的新闻资讯页面。

    那么首先怎么做缓存好点:

    vue做缓存页面还是比较简单的,就利用 keep-alive 组件就可以达到了。 而单独页面做缓存也是有几种方式,我这里就举例一种我经常使用的一个方法,其他的就自己去百度咯。

    App.vue 为例。

    <transition name="fade">
      <keep-alive include="news_index">
        <router-view/>
      </keep-alive>
    </transition>
    

    这里要特别说明下:

    include里面放的是组件的name,不是router 里面的name,一般一开始用都容易疏忽了,以为都不生效的问题。

    然后接下来就在那个缓存页面 beforeRouteLeave 记录滚动行为,如下:

    beforeRouteLeave(to, from, next) {
              // 组件离开的时候,获取页面滚动高度
              this.offsetTop = document.querySelector('#app').scrollTop
              next()
            },
    

    然后activated(只有缓存页面才有这个声明周期)周期中告诉页面滚动到相应的位置就可以了。

    activated() {
              setTimeout(()=>{
                this.$nextTick(() => {
                  document.querySelector('#app').scrollTop = this.offsetTop;
                });
              },10)
            },  

    这里要说明下:

    因为滚动属性 scrollTop 在手机端有的人为什么一直都0(pc端就没什么烦恼,都可以用).这个也是有原因的。一开始我也是

    document.querySelector('body').scrollTop
    苹果手机还行,能正常拿到值,而在安卓,蛋疼都是0, 最后body也是可以搞定,但是最后我觉得还是用app来搞定好点。 就是让app也变成滚动,overflow-y:scroll .然后设好高度。 代码如下:
    body,html{
        height:100%;
    }
    #app{
        height:100%;
         100%;
        overflow-y: scroll;
      }
    

     这样就可以正常获取滚动的数值了。 然后就可以让缓存的页面滚动起来了。

  • 相关阅读:
    arcims(HtmlView)开发经验总结《转》
    Oracle sequence
    ajax 简介
    PHP:路在何方?
    ArcIMS初级教程(4)
    设计开发必须收藏的资源网站
    Win2008+IIS7.0+VS2008 在测试调试网站时报错,紧急求救!
    动态生成客户端数组
    解决MySQL不允许从远程访问的方法
    MySql中delimiter的作用是什么
  • 原文地址:https://www.cnblogs.com/dashaxiong/p/12192684.html
Copyright © 2011-2022 走看看