vue+vux移動端上拉加載更多菜循,遇到的坑

項目屬于嵌入h5.掛在企業(yè)微信。由于列表過多,一般電腦端使用分頁癌幕,但是手機端分頁不合理衙耕,所以計劃用上拉到底部加載更多,實現(xiàn)分頁勺远。

一開始百度查到很多都是再用監(jiān)聽頁面滾動事件? window.addEventListener('scroll', this.scrollBottom) 橙喘,在蘋果上還好說,在安卓手機上的話如果一直上劃的話胶逢,請求一直在進行厅瞎,上拉多久請求多久,放開以后請求速度也慢初坠,代碼如下和簸。有坑啊。碟刺。锁保。

mounted () {

? ? ? ? // 添加滾動事件,檢測滾動到頁面底部

? ? ? ? window.addEventListener('scroll', this.scrollBottom)

? ? },

? ? beforeDestroy () {

? ? ? ? window.removeEventListener('scroll', this.scrollBottom);? ? //離開頁面時移除

? ? },

methods: {

????scrollBottom () {

? ? ? ? ? ? this.scrollH = document.body.scrollTop||document.documentElement.scrollTop;

? ? ? ? ? ? this.docH = document.body.scrollHeight||document.documentElement.scrollHeight;//文檔高度

? ? ? ? ? ? this.windowH = window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;//瀏覽器窗口高度

? ? ? ? ? ? //滾動到底部和頁面沒有正在執(zhí)行請求網(wǎng)絡數(shù)據(jù)的過程中的條件要同時成立才可以執(zhí)行請求請求數(shù)據(jù)操作

? ? ? ? ? ? if((this.scrollH + this.windowH)-0 >= (this.docH-2) && !this.showLoading){

? ? ? ? ? ? ? ? // 發(fā)起請求前需要阻止頁面滾動

? ? ? ? ? ? ? ? this.tip = '加載中'

? ? ? ? ? ? ? ? this.showloadmore = true

? ? ? ? ? ? ? ? // 判斷請求數(shù)量是否大于合同總數(shù)

? ? ? ? ? ? ? ? if(this.henum <= (this.PageIndex*this.starobjectarrnum)) {

? ? ? ? ? ? ? ? ? ? this.tip = '沒有更多'

? ? ? ? ? ? ? ? ? ? this.showloadmore = false

? ? ? ? ? ? ? ? ? ? return false

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? this.PageIndex += 1

? ? ? ? ? ? ? ? console.log(this.PageIndex)

? ? ? ? ? ? ? ? // 加載數(shù)據(jù)

? ? ? ? ? ? ? ? this.loadArticle()

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? return false

? ? ? ? ? ? }

? ? ? ? },

}

后來這個去找原因找了一天半沽。找到原因由于自己技術問題爽柒,一直解決不了。所以換了種方法者填。結果還是不錯的浩村,完美解決問題,ios占哟、安卓都沒問題心墅,不說了,上代碼

<template>

? ? <div class="stocklist">

? ? ? ? <div @touchstart="touchStart($event)" @touchend="touchEnd($event)">

? ??????????<!-- 列表 -->

????????????<div class="contract_list">...</div>

? ? ? ? ? ? <x-button v-show="isOriginHei" class="addrece_btn" @click.native="back">返回</x-button>

? ? ? ? ? ? <loading v-model="showLoading" text="獲取數(shù)據(jù)中"></loading>

? ? ? ? ? ? <div v-if="starobjectarrnum > 0 && henum >= 5">

? ? ? ? ? ? ? ? <load-more v-if="showloadmore" :tip="tip"></load-more>

? ? ? ? ? ? ? ? <load-more v-else :show-loading="false" :tip="tip"></load-more>

? ? ? ? ? ? </div>

? ? ? ? </div>

? ? </div>

</template>

<script>

import { Flexbox, FlexboxItem, AlertModule, XButton, Divider, LoadMore, Search, Group, Datetime } from 'vux'

export default {

? ? name: 'stocklist',

? ? data () {

? ? ? ? return {

? ? ? ? ? ? datatext: '錄入時間',

? ? ? ? ? ? showLoading: false,

? ? ? ? ? ? tabindex: 0,

? ? ? ? ? ? henum: 0,

? ? ? ? ? ? objectArray: [],

? ? ? ? ? ? tip: '加載更多',

? ? ? ? ? ? showloadmore: false,

? ? ? ? ? ? PageIndex: 1,

? ? ? ? ? ? starobjectarrnum: 5,

? ? ? ? ? ? startY: 0,

? ? ? ? ? ? isLoading: false,

? ? ? ? }

? ? },

? ? components: {

? ? ? ? Flexbox,

? ? ? ? FlexboxItem,

? ? ? ? AlertModule,

? ? ? ? XButton,

? ? ? ? Divider,

? ? ? ? LoadMore,

? ? ? ? Search,

? ? ? ? Group,

? ? ? ? Datetime

? ? },

? ? created () {

? ? ? ? this.tabindex = this.$route.query.page

? ? ? ? this.showLoading = true

? ? ? ? // 請求數(shù)據(jù)

? ? ? ? this.loadArticle()

? ? },

? ? methods: {

? ? ? ? touchStart(e) {

? ? ? ? ? ? // 記錄按下位置

? ? ? ? ? ? this.startY = e.targetTouches[0].pageY;

? ? ? ? },

? ? ? ? touchEnd(e) {

? ? ? ? ? ? // 計算移動

? ? ? ? ? ? if (this.isLoading) {

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? ? ? let endX = e.changedTouches[0].pageX,

? ? ? ? ? ? ? ? ? ? endY = e.changedTouches[0].pageY,

? ? ? ? ? ? ? ? ? ? dy = this.startY - endY;

? ? ? ? ? ? //判斷是否向上滑動

? ? ? ? ? ? if(dy <= 0) {

? ? ? ? ? ? ? ? return false

? ? ? ? ? ? }

? ? ? ? ? ? if(dy < 20) {

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? ? ? let scrollHeight = this.$el.scrollHeight;

? ? ? ? ? ? let scrollTop = document.body.scrollTop||document.documentElement.scrollTop;

? ? ? ? ? ? // 判斷是否滑動到底部

? ? ? ? ? ? if (this.startY+dy >= scrollHeight) {

? ? ? ? ? ? ? ? //滑動距離到底部并且繼續(xù)下拉

? ? ? ? ? ? ? ? this.scrollToEnd(e)

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? scrollToEnd(e) {

? ? ? ? ? ? // 移動執(zhí)行判斷

? ? ? ? ? ? let scrollHeight = this.$el.scrollHeight;

? ? ? ? ? ? let clientHeight = this.$el.clientHeight;

? ? ? ? ? ? let scrollTop = this.$el.scrollTop;?

? ? ? ? ? ? if (scrollTop + clientHeight >= scrollHeight && !this.showLoading) {

? ? ? ? ? ? ? ? this.doLoadMore()?

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? doLoadMore() {

? ? ? ? ? ? this.isLoading = true

? ? ? ? ? ? this.tip = '加載中...'

? ? ? ? ? ? this.showloadmore = true

? ? ? ? ? ? if(this.henum <= (this.PageIndex*this.starobjectarrnum)) {

? ? ? ? ? ? ? ? this.tip = '沒有更多'

? ? ? ? ? ? ? ? this.showloadmore = false

? ? ? ? ? ? ? ? return false

? ? ? ? ? ? }

? ? ? ? ? ? this.PageIndex += 1

? ? ? ? ? ? console.log(this.PageIndex)

? ? ? ? ? ? // 加載數(shù)據(jù)

? ? ? ? ? ? this.loadArticle()

? ? ? ? },

? ? ? ? loadArticle () {

? ? ? ? ? ? let self= this

? ? ? ? ? ? this.showLoading = true

? ? ? ? ? ? ?this.datatext = "錄入時間"

? ? ? ? ? ? //請求合同數(shù)據(jù)

? ? ? ? ? ? var userdata = {...}

? ? ? ? ? ? this.$get('/xxxxxxxx',userdata)

? ? ? ? ? ? .then(res =>{

? ? ? ? ? ? ? ? ? ? this.isLoading = false

? ? ? ? ? ? ? ? ? ? this.showLoading = false

? ? ? ? ? ? ? ? ? ? this.tip = '加載更多'

? ? ? ? ? ? ? ? ? ? this.showloadmore = false

? ? ? ? ? ? ? ?})

? ? ? ? ? ? ? ?.catch(e => {

? ? ? ? ? ? ? ? ? ? ? ? this.isLoading = false;

? ? ? ? ? ? ? ? ? ? ? ? this.showLoading = false

? ? ? ? ? ? ? ? ? ? ? ? this.tip = '加載更多'

? ? ? ? ? ? ? ? ? ? ? ? this.showloadmore = false

? ? ? ? ? ? ? ? ? ? ? ? // console.log(e)

? ? ? ? ? ? ? ? ? ? ? ? AlertModule.show({

? ? ? ? ? ? ? ? ? ? ? ? ? ? title: '不好意思',

? ? ? ? ? ? ? ? ? ? ? ? ? ? content: "服務器繁忙"

? ? ? ? ? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ?})

? ? ? ? }

? ? }

}

</script>

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末重挑,一起剝皮案震驚了整個濱河市嗓化,隨后出現(xiàn)的幾起案子棠涮,更是在濱河造成了極大的恐慌谬哀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件严肪,死亡現(xiàn)場離奇詭異史煎,居然都是意外死亡,警方通過查閱死者的電腦和手機驳糯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門篇梭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酝枢,你說我怎么就攤上這事恬偷。” “怎么了帘睦?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵袍患,是天一觀的道長坦康。 經(jīng)常有香客問我,道長诡延,這世上最難降的妖魔是什么滞欠? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮肆良,結果婚禮上筛璧,老公的妹妹穿的比我還像新娘。我一直安慰自己惹恃,他們只是感情好夭谤,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巫糙,像睡著了一般沮翔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上曲秉,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天采蚀,我揣著相機與錄音,去河邊找鬼承二。 笑死榆鼠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的亥鸠。 我是一名探鬼主播妆够,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼负蚊!你這毒婦竟也來了神妹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤家妆,失蹤者是張志新(化名)和其女友劉穎鸵荠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伤极,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蛹找,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哨坪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸疾。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖当编,靈堂內(nèi)的尸體忽然破棺而出届慈,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布金顿,位于F島的核電站词渤,受9級特大地震影響,放射性物質發(fā)生泄漏串绩。R本人自食惡果不足惜缺虐,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望礁凡。 院中可真熱鬧高氮,春花似錦、人聲如沸顷牌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窟蓝。三九已至罪裹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間运挫,已是汗流浹背状共。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谁帕,地道東北人峡继。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像匈挖,于是被迫代替她去往敵國和親碾牌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345