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


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 相关文章推荐
JavaScript自执行闭包的小例子
Jun 29 Javascript
JS 退出系统并跳转到登录界面的实现代码
Jun 29 Javascript
网页防止tab键的使用快速解决方法
Nov 07 Javascript
Javascript限制网页只能在微信内置浏览器中访问
Nov 09 Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 Javascript
Javascript的表单与验证-非空验证
Mar 18 Javascript
全面解析node 表单的图片上传
Nov 21 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
Aug 29 Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 Javascript
详解Node.js如何处理ES6模块
May 15 Javascript
TypeScript 使用 Tuple Union 声明函数重载
Apr 07 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
纯Javascript实现ping功能的方法
2015/03/20 Javascript
javascript中this指向详解
2016/04/23 Javascript
前端性能优化及技巧
2016/05/06 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Django model class Meta原理解析
2020/11/14 Python
python之随机数函数的实现示例
2020/12/30 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
幼儿园安全责任书
2014/04/14 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
师范生求职自荐信
2014/06/14 职场文书
2014年营销工作总结
2014/11/22 职场文书
爱心捐书倡议书
2015/04/27 职场文书
门面租赁合同范文
2019/08/06 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Win11更新失败并提示0xc1900101
2022/04/19 数码科技