微信小程式開發常用技巧(6)——列表上拉載入更多
阿新 • • 發佈:2018-12-30
微信小程式API提供了監聽頁面使用者下拉重新整理事件,但是沒有提供上拉監聽事件,實際開發過程中經常會用到上拉列表,載入更多的需求。那麼如何實現呢?
實現原理:利用onReachBottom監聽頁面滑動到底部,然後執行具體的函式方法,例如請求資料,然後將列表資料進行重新賦值。
先看看頁面效果圖:
(載入更多資料)
(資料載入完畢)
程式碼如下:
<!--index.wxml-->
<view class="class_list">
<view class="class_item" wx:for="{{list_data}}">
item {{item}}
</view>
<view class="class_item class_item_end">
{{title}}
</view>
</view>
/**index.wxss**/
.class_list{
background-color: #fff;
color: #000;
}
.class_item{
border-bottom: solid #f5f5f5 1px;
padding: 20px;
}
.class_item_end{
text-align: center;
}
page{
background-color : #f5f5f5;
}
//index.js
Page({
data:{
list_data:[],
title:"正在載入資料..."
},
onLoad: function () {
var that = this
that.setData({
list_data:[0,1,2,3,4,5,6,7,8,9]
})
},
onReachBottom: function () {
var that = this
setTimeout(function(){
that.setData({
list_data: [0 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
title: "資料載入完畢"
})
},1000)
}
})
上面程式碼難度不大,看上去也很易懂,在onReachBottom中使用了setTimeout()模擬請求時間,真實開發中換做https請求。
雖然這是一個完整的demo,但是還有很多小瑕疵,各位初學者可以自行嘗試解決:
1、如何改為真實的https請求?
2、如果一次請求還沒收到返回值,再次呼叫了該方法,如何避免重複呼叫https?
3、嘗試結合API中的下拉載入更多,實現一個完整的demo
4、現在監聽的是滑動到頁面底部,但是實際情況下,應該當最下面“正在載入資料…”這一欄頂部出現在頁面可視部分,就執行傳送請求方法,如何修改,實現?