在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue所有頁面前進(jìn)請求數(shù)據(jù)后退不請求數(shù)據(jù)保持之前瀏覽狀態(tài)包括滑動位置等

vue所有頁面前進(jìn)請求數(shù)據(jù)后退不請求數(shù)據(jù)保持之前瀏覽狀態(tài)包括滑動位置等

求教大神能否實現(xiàn)頁面前進(jìn)請求數(shù)據(jù),后退不請求數(shù)據(jù),展示之前請求過的數(shù)據(jù),包括滾動到跳轉(zhuǎn)前頁面的位置,網(wǎng)上鋪天蓋地的keep-alive方案在移動端會出現(xiàn)各種bug,不行,pc端試沒問題。
需求是記錄上次頁面點(diǎn)的位置,包括分頁列表滑動到的位置,tab等

回答
編輯回答
孤星

watch 監(jiān)聽$route 這個思路能解決你的需求嘛

2017年4月3日 13:53
編輯回答
入她眼

怎么判斷是后退到該頁面還是點(diǎn)擊菜單到該頁面,還是說只要非首次進(jìn)入就不刷新

2017年3月14日 12:28
編輯回答
誮惜顏

我keep-alive都用了好幾個項目了 也沒出現(xiàn)啥 bug啊。。。。


我覺得項目用keep-alive 的話 要注意幾個問題把

  1. 頁面狀態(tài)的重置,特別是表單
  2. 之前發(fā)現(xiàn)一個問題 三級路由的時候,從這個模塊的第三級push到另一個模塊的第三級 頁面html竟然沒變,發(fā)現(xiàn)是keep-alive的原因,我是整個項目keep-alive的,具體表現(xiàn)可以看我在github的提問:

https://github.com/vuejs/vue-...
我的解決方案是路由只是用2級,但是為了url看起來比較好看,url表現(xiàn)出來的是三級

優(yōu)點(diǎn)的話 就是能保存頁面狀態(tài),就我的項目而言
像是一些首頁啊、分類頁面啊、個人中心頁面等等 這種只用請求一個次的頁面 請求事件放在created里面就行

關(guān)于樓主說的列表到詳情,我一般的做法是把請求函數(shù)放在beforeRouteEnter里面,
然后根據(jù)條件判斷是否要重新加載第一頁:
!list.length || from.name != 'xxxx'
(因為我的項目跑在微信瀏覽器里 所以做list判斷是為了解決,如果用戶在詳情頁刷新頁面,然后返回到列表頁,列表頁是空的情況)

關(guān)于保存頁面滾動位置,我遇到兩種情況:

  1. 我的列表頁面使用的是better-scroll, 我從詳情頁返回到列表頁 列表的移動位置是自動保留的,所以不需要做特殊處理
  2. 列表頁不需要分頁,所以用的是overflow-y:auto,這個是沒有保留滾動狀態(tài)的,所以我的做法是:

vue部分:

beforeRouteEnter(to, from, next) {
  next(vm => {
    if (!vm.hasLoadData) {
      vm.getList()
    }

    if (vm.scrollTop && vm.$refs.scrollBody) {
      vm.$refs.scrollBody.scrollTop = vm.scrollTop        //    設(shè)置滾動位置
    }
  })
},
beforeRouteLeave(to, from, next) {
  this.scrollTop = this.$refs.scrollBody.scrollTop        //    保存滾動位置
  next()
},
data() {
  return {
    scrollTop: 0,   //  頁面滾動條位置
  }
},

html:

...
<div ref="scrollBody"><!--這個是滾動容器 height: 100vh; overflow-y: auto; -->
    這里是列表內(nèi)容
</div>
...

以上,如果有啥問題,大家多討論討論

2017年4月24日 10:51
編輯回答
做不到

把你需要保存的信息保存到localstorage里,頁面加載的時候取一下看看有沒有,有的話就用localstorage里的

2018年6月27日 01:11