微信小程序上拉加载更多(分页加载)

前言

当用户打开一个页面时,假设后台数据量庞大时,一次性地返回所有数据给客户端,页面的打开速度就会有所下降,而且用户只看上面的内容而不需要看后面的内容时,也浪费用户流量,基于优化的角度来考虑,后台不要一次性返回所有数据,当用户有需要再往下翻的时候,再加载更加数据出来。

上拉加载更多

业务需求:

列表滚动到底部时,继续往上拉,加载更多内容

必备参数:

  1. page –页数
  2. per_page –每页个数

其他参数:

根据接口的所需参数

实现原理:

当第一次访问接口时,传递2个必备参数(第1次加载,需要返回数据的个数为15个),和其他参数(需要搜索的字符串)给后台,后台返回第一次数据过来。在请求成功的的回调函数中,判断返回的数据是否>0,是,则取出数据,渲染视图层,并把“上拉加载”显示在列表底部;否,则没有数据可取,并把“没有更多”显示在列表底部,同时把“上拉加载”隐藏掉。

当用户已经滚动到列表底部(这里使用到小程序提供的scroll-view组件的bindscrolltolower事件),触发bindscrolltolower事件,参数page+1,再把2个必备参数(第2次加载,需要返回数据的个数为15个)和其他参数(需要搜索的字符串)给后台,后台把其余的数据返回给前台,前台在原来数据的基础上添加数据。

html

1
2
3
<scroll-view scroll-y="true" style="height:100%;" bindscrolltolower="onReachBottom">
<!-- 中间部分 -->
</scroll-view>

JavaScript

1
2
3
4
5
6
7
8
// 页面上拉触底事件的处理函数
onReachBottom: function () {
var that = this;
that.data.page = that.data.page + 1;

// 异步请求
that.getNewData(that.data.page, that.data.per_page);
},

JSON

1
2
3
{
"onReachBottomDistance": 40
}
这样子就实现了上拉加载更多,十分的简单。有机会我写一篇下拉刷新的功能。到这里就结束了,谢谢大家的观看