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


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 相关文章推荐
JS实现拖动示例代码
Nov 01 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 Javascript
jQuery与js实现颜色渐变的方法
Dec 30 Javascript
微信小程序滑动选择器的实现代码
Aug 10 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
JS获取月的第几周和年的第几周实例代码
Dec 05 Javascript
vuex actions异步修改状态的实例详解
Nov 06 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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图片上传程序
2008/03/27 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
windows系统下Python环境搭建教程
2017/03/28 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python上selenium的弹框操作实现
2020/07/13 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
总经理任命书范本
2014/06/05 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
MySQL 原理与优化之Update 优化
2022/08/14 MySQL