小程序触底刷新和分页加载

2018-08-30(自己悄咪咪加个日期)
emmm....日期难道不是自动生成的嘛(算了还是自己加上好了,方便后面找~)
果然小sb哎。。。
好了好了先说正事,说完就可以吃月饼啦~(๑• . •๑)

触底刷新就是在触底的时候执行一次分页加载的函数,页码+1。所以,先说分页加载啦。
请求数据列表的时候,接口原本是写在onload里面,一次性请求所有。写了分页之后,假设一次加载10条,首先传参数给后台,比如page=1,加载出10条,触底的时候page+1,再传给后台,加载出接下来10条,把新返回的数组和之前的数组合并就可以,以此类推。

var app=getApp();
var getMore1 = function (that) {
  var page = that.data.page;//页码
  // 需求列表
  app.util.request({
    url: "entry/wxapp/DemandList",//这里是你的接口
    cachetime: "0",
    data: {
      page: page,
      type_id: that.data.type_id//这个不用管,是我传的筛选时候的参数,跟分页没关系
    },
    success: function (res) {
      if (res.data == '' && that.data.xuqiuArr!='') {
        wx.showToast({
          title: '没有更多数据!',
          icon: 'success',
          duration: 2000
        })
      }
      var arr = that.data.xuqiuArr//旧的数组
      for (var i = 0; i < res.data.length; i++) {
        arr.push(res.data[i])
      }
      that.setData({
        xuqiuArr: arr
      });
      page++;
      that.setData({
        page: page
      })
    }

  });
};

(上面的代码并没有写在page({ })里)
注意,data里一定要有page和数组的初始值,否则会报错:

/**
   * 页面的初始数据
   */
  data: {
    page:1,
    xuqiuArr:[]
  }

如果页面是onshow的时候刷新的,记得要把数组清空,page初始化为1:

onShow: function () {
    var that=this;
    that.setData({
      page:1,
      xuqiuArr:[]
    })
    getMore1(that)
  },

然后在每次触底的时候调用getMore1()函数就行了:

/**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    var that=this;
      getMore1(that)
  },

总结:看代码就行,文字大多是废话。。。主要是合并旧的数组和新的数组,然后记得页面刷新的时候及时清空数组和初始化页码就行。
(PS:想想还是决定把自己写的东西都发布出去,毕竟我这样的小菜鸟闭门也是造不出车的。
如果能有幸帮到哪位大兄弟或者小可爱那最好不过,有写的不对的地方请指正,一定及时改,有错望轻喷,蟹蟹 >﹏<)

你可能感兴趣的:(小程序触底刷新和分页加载)