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


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 相关文章推荐
拖动Html元素集合 Drag and Drop any item
Dec 22 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 Javascript
jQuery中on()方法用法实例
Jan 19 Javascript
javascript事件模型实例分析
Jan 30 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
p5.js入门教程和基本形状绘制
Mar 15 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
小程序云开发部署攻略(图文教程)
Oct 30 Javascript
详解vuex 渐进式教程实例代码
Nov 27 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 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旋转图片90度的方法
2013/11/07 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
javascript中this的四种用法
2015/05/11 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python实现进程间通信简单实例
2014/07/23 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
Python3内置模块random随机方法小结
2019/07/13 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
实习生自荐信范文分享
2013/11/27 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
高中学生评语大全
2014/04/25 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
五年级下册复习计划
2015/01/19 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android