您好,登錄后才能下訂單哦!
記錄一下本次項(xiàng)目我使用的方法,有更簡(jiǎn)單便捷的方法,歡迎交流
描述: 假設(shè)有a b c 頁(yè)面
做法: 使用到了vuex ,beforeRouteLeave
1.首先在vuex中state定義一個(gè)變量來(lái)記錄當(dāng)前的瀏覽的位置
//state中定義數(shù)據(jù) state: { carrerTouScroll: { height: '' //滾動(dòng)的距離 } } //mutations 操作state數(shù)據(jù) mutations: { setCarrerTouScroll (state, disdance) { //管理賽事 滾動(dòng)距離 state.carrerTouScroll.height = disdance }, } //使用getters 有的不加這句也可以,但是有時(shí)候不加就不行,所以還是加上吧 getters: { getCarrerTou: state => state.carrerTouScroll }
2.在需要的頁(yè)面中 我使用了beforeRouteLeave 來(lái)記錄沒(méi)有路由離開(kāi)的時(shí)候當(dāng)前瀏覽的位置
beforeRouteLeave (to, from, next) { // 離開(kāi)路由前 let that = this if (to.meta.touFlag) { let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop this.$store.commit('setCarrerTouScroll', scrollTop) } else { this.$store.commit('setCarrerTouScroll', 0) } next() },
其中to.meta.touFlag 是我自己定義的,因?yàn)樾枰涗浀捻?yè)面很多,我覺(jué)的這樣比較方便,只需要在route 頁(yè)面加一個(gè)參數(shù)就好了
{ path: '/careerAddMainTeam', name: 'CareerAddMainTeam', component: CareerAddMainTeam, meta: { touFlag: true } },
當(dāng)然你也可以使用to.name ,如果需要跳轉(zhuǎn)頁(yè)面不多的話(huà)
beforeRouteLeave (to, from, next) { // 離開(kāi)路由前 let that = this if (to.name === 'CareerAddMainTeam') { let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop this.$store.commit('setCarrerTouScroll', scrollTop) } else { this.$store.commit('setCarrerTouScroll', 0) } next() },
3.最后一步就是在每次b頁(yè)面獲取完數(shù)據(jù)的時(shí)候使用$nextTick,讓頁(yè)面恢復(fù)到上次瀏覽的位置
this.$nextTick(() => { this.scrollTop = this.$store.state.carrerTouScroll.height document.documentElement.scrollTop = this.scrollTop })
一定要在b頁(yè)面獲取完數(shù)據(jù)后使用nextTick,不然是沒(méi)有效果的
這次就記錄到這,如果有別的好方法,請(qǐng)指出
到此這篇關(guān)于vue 移動(dòng)端記錄頁(yè)面瀏覽位置的方法的文章就介紹到這了,更多相關(guān)vue 移動(dòng)端頁(yè)面瀏覽位置內(nèi)容請(qǐng)搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。