微信小程序 无限加载 上拉加载更多
加载更多,其实就是再次向接口发送请求,把返回的数据,追加到渲染页面的数组里的过程,具体实现实例如下:
demo.js
// pages/project/project.js
const app = getApp()
Page({ /**
* 页面的初始数据
*/
data: { //每页显示的行数:
pagesize: 7,
//页码(从1开始):
p: 1, //排序方式:
paixu: 'viewcount',
//升序或降序:
order: 'desc', //用于标识是否还有更多的状态
state: 1, //用于渲染页面的数组
arrayProject:[], //用于数组的追加和暂存
allProject:[],
}, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var mythis = this;
getproinfo( this.data.pagesize, this.data.p,mythis)
}, /**
* 点击加载更多时触发
*/
loadMore:function(){
var mythis = this;
wx.showLoading({
title: '玩命加载中...',
});
mythis.data.p = mythis.data.p + 1;
getproinfo(this.data.pagesize, this.data.p,mythis);
wx.hideLoading();
}, /**
* 页面上拉触底事件的处理函数,与点击加载更多做同样的操作
*/
onReachBottom: function () {
var mythis = this;
wx.showLoading({
title: '玩命加载中...',
});
mythis.data.p = mythis.data.p + 1;
getproinfo(this.data.pagesize, this.data.p,mythis);
wx.hideLoading(); }, }) /**
* 获取项目列表
*/
function getproinfo(pagesize, p, mythis){ wx.request({
url: app.globalData.host + 'index.php/Ho/getproinfo',
method: 'post',
data: {
pagesize: pagesize,
p:p
},
header: {
'content-type': 'application/x-www-form-urlencoded'
}, success: function (res) {
//如果搜出来的结果<1 就说明后面已经没数据可加载了,所以将state设为0
if (res.data.rows.length<1)
mythis.setData({
state: 0
});
else{
var state1 = 1;
//如果有数据,但小于每次期望加载的数据量(pagesize),将state设为0,表示后面已没有数据可加载
if (res.data.rows.length < mythis.data.pagesize)
var state1 = 0;
//循环将结果集追加到数组后面
for (var i = 0; i < res.data.rows.length; i++) {
mythis.data.allProject.push(res.data.rows[i]);
}
mythis.setData({
arrayProject: mythis.data.allProject,
state: state1
});
}
console.log(mythis.data.arrayProject)
},
fail: function (res) {
console.log(res);
}
});
}
demo.html
<view class='projectlist' >
<view class='project' wx:for="{{arrayProject}}" wx:for-item="itemProjec" wx:key="id" data-datas="{{itemProjec}}" bindtap='projectDetail'>
<view class='projectText'> {{itemProjec.gongchengmingcheng}} </view>
<view class='projectleibie label'> {{arrayCategory[itemProjec.leixing].name}} </view>
<view class='projectjiesuan label'> {{arraySchedule[itemProjec.jieduan].name}} </view>
<view class='projectTime'> {{itemProjec.faburiqi}} </view>
</view>
//实现屏幕上拉加载更多
<view class='remind' wx:if="{{state==0}}"><view>没有更多了</view></view>
</view>
微信小程序 无限加载 上拉加载更多的更多相关文章
- 【微信小程序】scroll-view 的上拉加载和下拉刷新
1.在微信小程序中,想到 下拉刷新 和 上拉加载,如果是整个页面都拖动的话,可以在页面配置中,配置 enablePullDownRefresh 和 onReachBottomDistance 然后在 ...
- 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)
业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ...
- wepy小程序实现列表分页上拉加载(2)
第一篇:wepy小程序实现列表分页上拉加载(1) 本文接着上一篇内容: 4.优化-添加加载动画 (1)首先写加载动画的结构和样式 打开list.wpy文件 template结构代码: <temp ...
- wepy小程序实现列表分页上拉加载(1)
使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 列表页效果图: 1.新建列表页 (1)在pages里面新建一个list.wpy文件 初始代码 ...
- [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息
因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...
- 微信小程序之自定义select下拉选项框组件
知识点:组件,animation,获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框,所以只有自定义.自定义的话,可以选择模板的方式,也可以选择组件的方式来创建. 这次我选择了组件, ...
- 微信小程序 在canvas画布上划动,页面禁止滑动
要实现微信小程序 在canvas画布上划动,页面禁止滑动,不仅要设置disable-scroll="true",还要要给canvas绑定一个触摸事件才能生效. <canvas ...
- 微信小程序简单封装图片上传组件
微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ...
- 微信小程序(2)--下拉刷新和上拉加载更多
下拉刷新 1.首先在.json文件中配置(如果在app.json文件中配置,那么整个程序都可以下拉刷新.如果写在具体页面的.json文件中,那么就是对应的页面下拉刷新.) 具体页面的.json文件: ...
随机推荐
- VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业、教育、游戏)
VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业.教育.游戏) 可公对公签正规合同,开发票. 我们是北京的公司.专业团队,成员为专业 VR/AR 产品公司一线开发人员,有大型产品开发 ...
- vue中兄弟组件间通讯
vue2.0中兄弟组件间的通讯是通过eventBus(事件发布订阅)实现的. eventBus.js import Vue from 'vue' const eventBus = new Vue() ...
- TypeError: atlas.getSpriteFrame is not a function
1.资源结构如下: 2.在使用cc.loader.loadRes动态异步加载cc.SpriteAtlas资源时出现这个错误,代码如下: var self = this; var url = " ...
- nodejs使用log4js记录日志
log4j是java里面最好用的日志记录插件,在.net上面也有移植log4j.net.同样也移植到了nodejs里面,多的不说,把自测通过的代码粘出来吧. var log4js = require( ...
- SSD固态硬盘是会掉速的。
也没什么好的办法. 只是自己不再疑神疑鬼,总觉得中病毒了. 下面的文章还是挺有参考意义的. http://diy.pconline.com.cn/627/6271636_all.html SSD变慢了 ...
- centos7: nginx安装配置
centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc ...
- gitignore有时候为啥过滤不了文件或目录
一.问题介绍 使用Git过程中,有时候我们想过滤项目中的部分文件,在.gitignore中加入该文件名称或该文件所在目录的名称,比如我们的项目日志文件(.log文件) 但是有时候发现不管用.不好使. ...
- 20181013xlVba导入成绩
Sub 导入成绩() Const TargetSheet = "年级_原始成绩汇总" Const DesSheet = "年级_本次成绩总表" Applicat ...
- android--------自定义控件 之 方法篇
前面简单的讲述了Android中自定义控件的理论和流程图,今天通过代码来详细的讲解一下其中的方法 首先先创建一个类 CircularView 继承于 View,之后实现构造方法(初始化步骤) publ ...
- centOS 6.5采用python+nginx+uwsgi实现爬金十财经日历
上一篇中有关于安装nginx.python.uwsgi的过程,这里不再重述.下面是有关在具体布署中的一些过程和问题处理 一.因为用到了bs4(BeautifulSoup)\paste\lxml所以这些 ...