1. 程式人生 > >微信小程式開發常用技巧(6)——列表上拉載入更多

微信小程式開發常用技巧(6)——列表上拉載入更多

微信小程式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、現在監聽的是滑動到頁面底部,但是實際情況下,應該當最下面“正在載入資料…”這一欄頂部出現在頁面可視部分,就執行傳送請求方法,如何修改,實現?