vue返回上一頁面時回到原先滾動的位置

項目結束,測試時發(fā)現(xiàn)在首頁商品列表中,向上滑動幾頁后點擊進入詳情,從詳情頁面返回商品列表時,頁面回到了最頂部,測試不通過說是用戶體驗不好,要求從哪里點擊進去返回該頁面時回到原先的滾動頁面。
思路:因為vue是單頁面應用,進入其他頁面時會銷毀該頁面,用keep-alive不讓其刷新,具體實現(xiàn)為:
(1).在App.vue中加入:

<template>
  <div id="app">
    <!--<router-view/>-->
    <!--頁面返回不刷新-->
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>
</template>

(2).index.js頁面

export default new Router({
  routes: [{
    path: '/',
    name: 'index',
    component: index,
    meta: {
      keepAlive: true
    }
  },

這樣在index.vue中,mounted方發(fā)只走一次,在瀏覽器上實現(xiàn)了返回原來滾動位置的目的。但是在手機上測試,發(fā)現(xiàn)沒用,
解決手機上實現(xiàn)目的的方法:

//在頁面離開時記錄滾動位置
beforeRouteLeave (to, from, next) {
    this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop
    next()
  },

//進入該頁面時,用之前保存的滾動位置賦值
beforeRouteEnter (to, from, next) {
    next(vm => {
      document.body.scrollTop = vm.scrollTop
    })
  },

OK!實現(xiàn)!!

鏈接:http://www.itdecent.cn/p/5f01f9a51a98

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容