【微信小程序】 云数据页面上拉加载数据

找了很久,网站上直接搜不到 = =,生气了

 

把之前找到的贴一下

1.逻辑

wx.cloud.init()
let currentPage = 0 // 当前第几页,0代表第一页 
let pageSize = 10 //每页显示多少数据 
Page({
  data: {
    dataList: [], //放置返回数据的数组  
    loadMore: false, //"上拉加载"的变量,默认false,隐藏  
    loadAll: false //“没有数据”的变量,默认false,隐藏  
  },
  //页面显示的事件
  onShow() {
    this.getData()
  },
  //页面上拉触底事件的处理函数
  onReachBottom: function () {
    console.log("上拉触底事件")
    let that = this
    if (!that.data.loadMore) {
      that.setData({
        loadMore: true, //加载中  
        loadAll: false //是否加载完所有数据
      });
      //加载更多,这里做下延时加载
      setTimeout(function () {
        that.getData()
      }, 2000)
    }
  },
  //访问网络,请求数据  
  getData() {
    let that = this;
    
    //第一次加载数据
    if (currentPage == 1) {
      this.setData({
        loadMore: true, //把"上拉加载"的变量设为true,显示  
        loadAll: false //把“没有数据”设为false,隐藏  
      })
    }
    //云数据的请求
    wx.cloud.database().collection("userlist")
      .skip(currentPage * pageSize) //从第几个数据开始
      .limit(pageSize)
      .get({
        success(res) {
          if (res.data && res.data.length > 0) {
            console.log("请求成功", res.data)
            currentPage++
            //把新请求到的数据添加到dataList里  
            let list = that.data.dataList.concat(res.data)
            that.setData({
              dataList: list, //获取数据数组    
              loadMore: false //把"上拉加载"的变量设为false,显示  
            });
            if (res.data.length < pageSize) {
              that.setData({
                loadMore: false, //隐藏加载中。。
                loadAll: true //所有数据都加载完了
              });
            }
          } else {
            that.setData({
              loadAll: true, //把“没有数据”设为true,显示  
              loadMore: false //把"上拉加载"的变量设为false,隐藏  
            });
          }
        },
        fail(res) {
          console.log("请求失败", res)
          that.setData({
            loadAll: false,
            loadMore: false
          });
        }
      })
  },
})

2.视图


  
    {{item.note}}
  
  
  

3.样式

page {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.result-item {
  display: flex;
  flex-direction: column;
  padding: 20rpx 0 20rpx 110rpx;
  overflow: hidden;
  border-bottom: 2rpx solid #e5e5e5;
}
.title {
  height: 110rpx;
}
.loading {
  position: relative;
  bottom: 5rpx;
  padding: 10rpx;
  text-align: center;
}

 

你可能感兴趣的:(微信小程序)