1. 程式人生 > >Ionic -- Refresher & InfiniteScroll 下拉刷新與滾動懶加載

Ionic -- Refresher & InfiniteScroll 下拉刷新與滾動懶加載

select PC pull timeout circle doc 加載 spin ext

下拉刷新和滾動加載在移動端是很常見的需求,Ionic 為我們提供了開箱即用的組件。在這裏我結合自己做的小demo簡單介紹下。

Template

在模板中需要將 ion-refresher 組件放置在 ion-content 內部的首位,將 ion-infinite-scroll 置於尾部。

<ion-refresher (ionRefresh)="doRefresh($event)">
    <ion-refresher-content
        pullingIcon="arrow-dropdown"
        pullingText=
"下拉刷新" refreshingSpinner="circles" refreshingText="刷新中..."> ></ion-refresher-content> </ion-refresher> <!-- 這裏放置需要顯示的數據 --> <ion-infinite-scroll (ionInfinite)="doInfinite($event)"> <ion-infinite-scroll-content
loadingSpinner="bubbles" loadingText="加載更多..."> </ion-infinite-scroll-content> </ion-infinite-scroll>

Refresher 下拉刷新

下拉刷新事件在用戶下拉一定程度時被觸發,進而啟動刷新過程。一旦異步操作完成並且刷新結束,需要調用complete()。

doRefresh(refresher){
    setTimeout(() => {
        this.getData() //獲取數據
refresher.complete() }, 1000) }

InfiniteScroll 滾動懶加載

無限滾動事件是當用戶向上滾動頁面時執行的操作,當用戶滾動到指定的距離觸發事件。異步操作完成需要調用complete()。
雖然名字叫無限滾動,但在實際需求中我們經常用它來完成數據的懶加載功能。

doInfinite(infiniteScroll){
    setTimeout(() => {
        this.getData()
        infiniteScroll.complete()
    }, 1000)
}

示例

1. 效果展示

基於一個簡單的增刪改查小 demo 效果如圖。

技術分享圖片 技術分享圖片

2. Template

技術分享圖片

3. Model

在PC端一般將數據分頁處理以達到提升性能的目的,而移動端的操作特性不允許使用分頁組件(既醜又不方便 : )
但它們原理是相同的,因此不必改變接口相關方法只改變前端實現即可。當前的 PageInfo 是需要展示數據類的分頁包裝類。

技術分享圖片

4. Service

調用接口方法註冊為服務,使用時依賴註入即可。

技術分享圖片

5. Typescript

調用分頁接口服務傳參獲取數據,每加載一次就將部分數據 push 到結果集中,view 隨之更新。

技術分享圖片

由於使用場景較多,這裏也可以將 doRefresh()/doInfinite() 註冊為服務。

技術分享圖片


若有錯誤或表達不準確處歡迎指正。

Ionic -- Refresher & InfiniteScroll 下拉刷新與滾動懶加載