下拉刷新和上拉加载是两个独立又密切联系的功能,上拉加载需要服务器端有分页机制,而下拉刷新除了重新获取信息外还要对之前的状态和页码进行初始化。
一个一个来吧。
其实yii2早就已经为我们准备好了,当我们访问了GET /xcx/albums的时候,返回的其实是一个带有分页信息的json,如果你对yii2很熟悉,一定知道activeDataProvider本身就是带分页功能的,默认每页20条数据。
我们再来回顾一下GET /xcx/albums的返回
没错,在响应的header里你一定发现了上面四条数据,就是它们,每次接口的返回其实yii2已经告诉了我们当前的页码、一共多少页、每页的数据量以及一共多少条数据。
好,那就简单了,我们只需要在接口处增加page参数告诉我们要请求那一页就可以了。
现在知道后台已经能按照页码返回数据了,接下来就是小程序,对于移动应用一般不会是直接显示页码然后点击,更多是随着我们屏幕的下滑逐渐出现新的内容,就是所谓的上拉加载。当然还有个下拉刷新,这个本章最后一部分进行讲解。
上拉加载主要利用了js的onReachBottom函数,它表示“页面上拉触底事件的处理函数”,我们就在这一刻从后台获取新的数据并且添加到现有页面下方。
首先我需要在小程序页面定义一个变量(page)代表即将要获取第几页,然后再定义一个获取后台数据的函数就可以了,记住这个获取是要带页面参数的。
为此我独立出一个函数专门做信息获取这件事情,如下图
不知道你是否看明白,在onReady函数内我们完成了数据的先进次加载。当然也许你更关心的是N+1次加载的事情,接下来我们就来实现它,启动onReachBottom函数。
试想一下当我们获取了先进页以后,页面下来到底部我们需要获取第二页,此刻page参数应该2,为此我们需要对loadList做一次小手术,这次手术完成了两件事情。
看看下图的改造
当从后台获取数据后进行循环,然后添加现有的数据数组中,就像上图的绿色框框内的代码一样。合并数据后执行page++供下一次使用。
而每次页面到底部的时候都进行一个onReachBottom函数,它执行了loadList。
疑问来了?????是的,先进个问题就是page到什么时候是个头,按照上面的逻辑会一直递增,然后获取数据,这显然是逻辑错误的,我们应该告诉小程序一共有多少页,当页面达到数量后就不在获取数据了。
为此我们来增加一个新变量 hadLastPage = false,默认代表还没有到达最后一页,然后继续改造loadList,在这里用到了yii2给我们响应header中的那些数据,看下图
逻辑不复杂,红色框内的意思是判断yii2的数据返回,如果当前页数已经等于总页数说明最后一页了,则设置hadLastPage=当前页数,否则page++
另外在函数最前端进行了一次判断,调用此函数时候,如果发现hadLastPage不是false,则直接提示到底了,不再去后台获取数据。
小程序对下拉刷新是有一定支持的,那就是json文件里的enablePullDownRefresh参数,当你如下设置enablePullDownRefresh时候
另外当我们设置了enablePullDownRefresh=true后会触发js文件中的onPullDownRefresh函数,你可以在里面做要做的事情,比如对页面的初始化,对数据列表的清空等等。
在上文我们已经完成了数据的上拉加载,接下来开始具体编写onPullDownRefresh函数。
一系列的初始化,记得最后执行一次wx.stopPullDownRefresh();将下拉关闭,否则那些小点点是不会消失的。
小提示:下拉刷新的样式在一定程度上也可以通过backgroundColor和backgroundTextStyle改变,比如你可以做一个下拉后背景是褐色,小点点是亮色的感觉。
以上就是下拉刷新和上拉加载,这只是其中一种思路,聪明的你一定会有更有趣的实现,可以留言此贴让我看到。
现在实现了相册的加载,但是这些数据都是假的,下一篇我们是实现新建和编辑相册,你也将学习到如何使用小程序的表单功能。
另外代码已经同步到了github上,欢迎下载同步学习 https://github.com/abei2017/xgh
2019-03-21 17:28:12 2668
2019-03-21 17:27:07 2949
2019-03-21 17:25:57 3047
2019-03-21 17:24:53 2953
2019-03-21 17:23:46 3022
公司正在筹划上市,为扩大市场占有率,将在近3个月内每日赠送6个免费服务名额。
今日仅剩下2个免费名额
关于微信小程序web-view组件内嵌h5的具体配置流程
目前, 微信 小程序 开发 呈现出 持续火热 的状态 ,越来越多的商家开始关注并开发自己的小程序, 但是,我们也看到,还有一部分的 商家 持观望的态度,不知道是...
微信小程序 对于许多企业的发展是有助力作用的,因此,现在 许多公司在小程序出现已经开始申请自己的账号,一些提前开始运营 微信小程序 的公司已经取得了不错的成绩,...
了解大连的微信公众号代运营价格,花最少钱干最多事
现在, 微信小程序 成为了企业在进行微信营销时又一个有效的方式,许多企业通过 微信小程序 开发的方式建立起微信上的营销覆盖网络,但是,有些企业在开发小程序之后,...
关于微信小程序web-view组件内嵌h5的具体配置流程
目前, 微信 小程序 开发 呈现出 持续火热 的状态 ,越来越多的商家开始关注并开发自己的小程序, 但是,我们也看到,还有一部分的 商家 持观望的态度,不知道是...
微信小程序 对于许多企业的发展是有助力作用的,因此,现在 许多公司在小程序出现已经开始申请自己的账号,一些提前开始运营 微信小程序 的公司已经取得了不错的成绩,...
了解大连的微信公众号代运营价格,花最少钱干最多事
现在, 微信小程序 成为了企业在进行微信营销时又一个有效的方式,许多企业通过 微信小程序 开发的方式建立起微信上的营销覆盖网络,但是,有些企业在开发小程序之后,...
小程序诞生近一年了,很多人在观望,有人把小程序当做下一个蓝海,ALL-IN小程序,有的人觉得小程序鸡肋,完全不想入驻。说穿了,大家最关系的问题是商机,微信小程序...
如果说 微信运营 成为企业营销推广的新渠道的话,那么微信小程序的发展是能抓住消费者心理的新趋势。随着时代的发展,人们的需求在不断的提高,而消费趋势也在不断的变化...
微信小程序并不是很新的概念,经历过一年不断更新改版的小程序,为什么 微信营销 首获红利?速成应用小程序总结出以下几点原因: 1.流量属性:更多场景、更多入口。小...
随着小程序的问世,越来越多的人将精力都花在小程序这一块,让其瞬间成为一个香饽饽,但是从总体来看,小程序其实是一个并不怎么被看好的产品,因为分享途径少,入口比较局...
目前, 微信 小程序 开发 呈现出 持续火热 的状态 ,越来越多的商家开始关注并开发自己的小程序, 但是,我们也看到,还有一部分的 商家 持观望的态度,不知道是...
现在, 微信小程序 成为了企业在进行微信营销时又一个有效的方式,许多企业通过 微信小程序 开发的方式建立起微信上的营销覆盖网络,但是,有些企业在开发小程序之后,...
微信小程序 对于许多企业的发展是有助力作用的,因此,现在 许多公司在小程序出现已经开始申请自己的账号,一些提前开始运营 微信小程序 的公司已经取得了不错的成绩,...
许多然错过了微信公众号的红利,那么在面对 微信小程序 的红利是,就不能错过了。对于传统企业来说, 微信小程序 可以成为他们转型升级的有一条道路,同时,目前处于小...
微信 小程序 成为最近比较热门的一个 话题 ,特别是 随着小程序各方面能力的不断提升 , 越来越多的企业希望通过开发小程序来弥补微信公众号在营销推广方面的不足,...
微信小程序 在上线之初就收获了无数的目光,而随着 微信小程序 的不断更新,企业可以开发的微信小程序的功能也得到了增加,用户也可以得到更好的使用体验,因此,可以预...