zoukankan      html  css  js  c++  java
  • VUE :keepAlive + Better-Scroll 点击列表进去详情页返回仍然在点击位置 我列表滑动用的框架是 Better-Scroll

    1.keepAlive的使用,在router下列表页路径 加meta:{ keepAlive: true}

      {path: '/', name: 'index', component: index,meta: {keepAlive: true}},

     2.App.vue中

    <template>
      <div id="app" class="color333">
        <!-- 可以被缓存的视图组件 -->
        <keep-alive>
          <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <!-- 不需要被缓存的试图组件 -->
        <router-view v-if="!$route.meta.keepAlive"></router-view>
      </div>
    </template>

     3.这个时候已经可以实现缓存了,但是会出现列表划不动的情况,或者偶尔跳到顶部的情况(没有计算到better-scroll的高度),继续上解决方案;我的列表部分是一个单独的组件,上面的ref是滚动用,下面的ref是在计算高度中用。(Better-scroll的使用记录的不是很明确,如有需要,单独去搜,看官网案例)

    tip:记得引入哦:import BScroll from 'better-scroll'

    这里有better-scroll的使用

     

     

    3.跳转详情页的时候:跳转时记录位置

      //  缓存scroll滚动的高度
            this.top=this.$refs['scrollul'].getBoundingClientRect().top;
            window.sessionStorage.setItem('scrollTop',this.scrollTop)

     4.在进入列表页的时候读取位置

     activated () {

        //让BSscroll滚动到之前存的scrollY位置
        if (window.sessionStorage.getItem('scrollTop')) {
          this.$refs['scrollul'].style.top  =this.top+ 'px'
              this.scroll.scrollTo(0,Number(window.sessionStorage.getItem('scrollTop')))
              this.scroll.refresh()
          }
        }

     

     

     

  • 相关阅读:
    一台服务器Nginx配置多个域名(一级域名或二级)
    Nginx启动和停止
    git删除本地及远程分支
    纯js实现复制内容到剪切板
    js 实现字符串转日期进行比较大小
    git 本地分支与远程分支 新建/删除/合并
    设置Git 记住密码
    炒鸡简单的javaScript的call和apply方法
    如何打war包
    Git 查看远程分支、本地分支、删除本地分支及远程分支
  • 原文地址:https://www.cnblogs.com/ting-0424/p/13152104.html
Copyright © 2011-2022 走看看