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


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 版本自动生成文章摘要
Jul 23 Javascript
比较简单的异步加载JS文件的代码
Jul 18 Javascript
用JQuery调用Session的实现代码
Oct 29 Javascript
js动态给table添加/删除tr的方法
Aug 02 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
js操作iframe父子窗体示例
May 22 Javascript
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
js获取数组的最后一个元素
Apr 14 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
vue 源码解析之虚拟Dom-render
Aug 26 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 Javascript
vue - props 声明数组和对象操作
Jul 30 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程序的方法
2009/03/09 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
js实现tab切换效果
2017/02/16 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Python 可爱的大小写
2008/09/06 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python中join()方法介绍
2018/10/11 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Python 切分数组实例解析
2019/11/07 Python
Pytorch to(device)用法
2020/01/08 Python
Django 再谈一谈json序列化
2020/03/16 Python
keras 多任务多loss实例
2020/06/22 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
法定代表人授权委托书范文
2014/08/02 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Python3接口性能测试实例代码
2021/06/20 Python
MySQL优化之慢日志查询
2022/06/10 MySQL