微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】


Posted in Javascript onMay 29, 2020

本文实例讲述了微信小程序实现上拉加载功能。分享给大家供大家参考,具体如下:

开发需求

进入页面,加载初始数据,当向上拖动页面至底部,自动加载新的数据,即上拉加载更多数据。

微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】

演示

微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】

index.wxml

<!-- 数据列表 -->
<view wx:for="{{listdata}}" wx:key="listdata" class='listitem'>
 <view class='title'>{{item.title}}</view>
 <view class='title'>资源ID:{{item.id}}</view>
 <image src="{{item.coverimg}}" class='cover'></image>
</view>

<!-- 如果还有更多数据可以加载,则显示玩命加载中 -->
<view class="load-more-wrap">
<block wx:if="{{hasMore}}">
 <view class="load-content">
 <text class="weui-loading"/><text class="loading-text">玩命加载中</text>
 </view>
</block>
<!-- 否则显示没有更多内容了 -->
<block wx:else>
 <view class="load-content">
 <text>没有更多内容了</text>
 </view>
</block>
</view>

index.js

Page({
 data: {
 listdata:[], //数据
 moredata: '',
 p:0, //当前分页;默认第一页
 hasMore:true //提示
 },

 //加载初始数据
 onLoad: function (options) {
 var that = this;

 //初始页面
 var p = that.data.p;
 this.loadmore();
 },

 //触底事件
 onReachBottom:function(){
 var that = this;
 //检查是否还有数据可以加载
 var moredata = that.data.moredata;
 //如果还有,则继续加载
 if (moredata.more != 0) {
  this.loadmore();
  //如果没有了,则停止加载,显示没有更多内容了
 }else{
  that.setData({
  "hasMore": false
  })
 }
 },

 //发起请求
 loadmore:function(){

 //加载提示
 wx.showLoading({
  title: '加载中',
 })

 var that = this;
 //页面累加
 var p = ++that.data.p;

 //请求服务器
 wx.request({
  url: '你的服务器/server.php?page=' + p,
  data: {
  "json": JSON.stringify({
   "p": p
  })
  },

  method: 'POST',
  header: {
  'content-type': 'application/x-www-form-urlencoded'
  },

  //请求成功,回调函数
  success:function(res){
  
  //隐藏加载提示
  wx.hideLoading();

  //判断市局是否为空
  if (res.data != 0) {
   that.setData({
   //把新加载的数据追加到原有的数组
   "listdata": that.data.listdata.concat(res.data), //加载数据
   "moredata": res.data,
   "p":p
   })
  } else {
   that.setData({
   "hasMore":false
   })
  }
  }
 })
 }
})

说明

1、url修改为你的服务端链接,格式是

http:域名/目录/?page=页码

例如:

http://www.baidu.com/api/data.php?page=1

页码是可变的,所以声明一个变量p,所以就是

`url: 'http://www.baidu.com/api/data.php?page' + p,`

index.wxss

.listitem{
 width: 90%;
 height: 155px;
 background: rgba(0, 0, 0, 0.2);
 margin:10px auto;
 text-align: center;
 position: relative;
 color:#fff;
}

.listitem .cover{
 width:100%;
 height:155px;
 position: absolute;
 top: 0;
 left: 0;
 z-index: -100;
}

.load-more-wrap .load-content{
 text-align: center;
 margin:30px auto 30px;
 color:#ccc;
 font-size: 15px;
}

服务端返回的数据格式

返回json数组的形式,例如

[
 {"id":"1","title":"标题1","coverimg":"url1"},
 {"id":"2","title":"标题2","coverimg":"url2"},
 {"id":"3","title":"标题3","coverimg":"url3"},
 {"id":"4","title":"标题4","coverimg":"url4"},
 {"id":"5","title":"标题5","coverimg":"url5"}
]

希望本文所述对大家微信小程序设计有所帮助。

Javascript 相关文章推荐
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
jquery实现预览提交的表单代码分享
May 21 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
CSS中position属性之fixed实现div居中
Dec 14 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
JQuery实现图片轮播效果
May 08 jQuery
Vue项目中如何引入icon图标
Mar 28 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
js实现带有动画的返回顶部
Aug 09 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 #Javascript
JavaScript隐式类型转换代码实例
May 29 #Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
May 28 #Javascript
node+vue实现文件上传功能
May 28 #Javascript
vue中实现图片压缩 file文件的方法
May 28 #Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 #Javascript
Vue实现附件上传功能
May 28 #Javascript
You might like
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
javascript call方法使用说明
2010/01/11 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
javascript制作2048游戏
2015/03/30 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
浅析Python多线程下的变量问题
2015/04/28 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
python 以16进制打印输出的方法
2018/07/09 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python实现最大子序和的方法示例
2019/07/05 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
比利时买床:Beter Bed
2017/12/06 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
秋季开学典礼主持词
2014/03/19 职场文书
贷款承诺书范文
2014/05/19 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
办公室岗位职责范本
2015/04/11 职场文书
休学证明范本
2015/06/19 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers