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


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 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
原生js实现简单的Ripple按钮实例代码
Mar 24 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
vuejs前后端数据交互之从后端请求数据的实例
Aug 11 Javascript
vue中watch和computed的区别与使用方法
Aug 23 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
一个多文件上传的例子(原创)
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
javascript回到顶部特效
2016/07/30 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
总结python中pass的作用
2019/02/27 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
python实现最大优先队列
2019/08/29 Python
艺术设计专业个人求职信
2013/09/21 职场文书
班组长安全职责
2014/01/05 职场文书
导游个人求职信范文
2014/03/23 职场文书
好听的队名和口号
2014/06/09 职场文书
支部组织生活会方案
2014/06/10 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
通报表扬范文
2015/01/17 职场文书
高中地理教学反思
2016/02/19 职场文书
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis