基於vue2寫的上拉載入

2021-07-31 15:27:33 字數 4843 閱讀 6955

因為我們專案中,還用了swiper。。。很多都是滑動切換的,但是又得上拉載入,所以導致,很多ui框架,我們用了,都有不同的bug出現,沒辦法,最後寫了乙個。**如下(這個因為很多地方會用,所以建議放在components/common下面):

<

template

>

<

div

class=

"loadmore"

>

<

slot

>

slot

>

<

slot

name=

"bottom"

>

slot

>

div>

template

>

<

style

>

.loadmore

style

>

<

script

>

export default

,autofill:

,distanceindex:

,bottompulltext:

,bottomdroptext:

,bottomloadingtext:

,bottomdistance:

,bottommethod:

,bottomallloaded: ,}

,data

() ;},

watch: }}

,methods:

else

this

.translate= 0;

});//

注釋if (!

this

.bottomallloaded&& !

this

.containerfilled) },

getscrolleventtarget

(element

) currentnode

= currentnode

.parentnode;}

return

window;},

//

獲取scrolltop

getscrolltop

(element)

else },

bindtouchevents

() ,

init

() }

,// autofill

屬性的實現 注釋

fillcontainer

()

else

if (

!this

.containerfilled) })

;}},

//

獲取監聽滾動元素的

scrolltop

checkbottomreached

()

else },

// ontouchstart

事件handletouchstart

(event) }

,// ontouchmove

事件handletouchmove

(event

) //

實時的clienty

位置this

.currenty=

event

.touches[0].

clienty;

// distance

移動位置和開始位置的差值

distanceindex---

let

distance = (

this

.currenty-

this

.starty)

/ this

.distanceindex;

// 根據

distance

判斷滑動的方向 並賦予變數

direction down---

向下互動;

up---

向上滑動

this

.direction=

distance

>

0 ?

'down'

: 'up'

;if

(this

.direction===

'up'

) if

(typeof this

.bottommethod===

'function'

&& this

.direction===

'up'

&&this

.bottomreached&&

this

.bottomstatus!==

'loading'

&& !

this

.bottomallloaded)

else

if (

this

.translate> 0)

this

.bottomstatus= -

this

.translate>=

this

.bottomdistance?

'drop'

: 'pull';}

},// ontouchend

事件handletouchend

()

else

}this

.direction= '';

}},mounted

() }

;script

>

然後哪個頁面需要,在哪個頁面匯入即可:import loadmore from './../common/loadmore.vue';在需要引入他的頁面寫法如下:

<

template>

<

section

class=

"finan"

>

<

load

-more

:bottom-method

="loadbottom"

:bottom-all-loaded

="allloaded"

:bottompulltext=

'bottomtext'

:auto-fill

="false"

@bottom-status-change

="handlebottomchange"

ref=

"loadmore"

>

<

div>

這裡寫你需要的另外的模組

div>

<

div

v-show=

"loading"

slot=

"bottom"

class=

"loading"

> 這個div是為讓上拉載入的時候顯示一張載入的gif圖

<

img

src=

"./../../assets/main/uploading.gif"

>

div>

load

-more

>

section

>

template>

然後在此頁面的data裡和methods設定如下:

export default

,data

() }

,methods: ,

loadbottom

: function

() api

.commonapi

(後台介面,請求引數

) 這個api是封裝的axios有不懂的可以看vue2+vuex+axios那篇文章

.then

(res=> )}

, 1000)}

);},

handlebottomchange

(status)

,}

這樣就完成了萬惡的上拉載入= =。。。

vue2實現懶載入

參考 五 配置非同步元件實現懶載入的問題分析 1 多次進出同乙個非同步載入頁面是否會造成多次載入元件?答 否,首次需要用到元件時瀏覽器會傳送請求載入元件,載入完將會快取起來,以供之後再次用到該元件時呼叫 2 在多個地方使用同乙個非同步元件時是否造成多次載入元件?如 a頁面 exportdefault...

vue上拉載入更多元件

很久沒發布文章了,但其實一直在學習寫元件,本來想寫個跑馬燈元件,但是因為css動畫會出現卡頓,就算開啟gpu加速還是會,暫時還沒有什麼好的解決方法,所以有解決方法的歡迎指點一下。我想,工作一段時間的都碰見過上拉載入更多需求,現在這種外掛程式也蠻多的,也很多是把上拉載入下拉重新整理結合。但是這些元件都...

基於 vue2 導航欄透明漸變

做法為 1 首先給要滾動變化的導航新增 style style fixed title 個人中心 style style slot left class news box overflow visible class iconfont news icon class news num 4 slot ...