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


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之解决IE下不渲染的bug
Jun 29 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
含有CKEditor的表单如何提交
Jan 09 Javascript
多个$(document).ready()的执行顺序实例分析
Jul 26 Javascript
jQuery中:nth-child选择器用法实例
Dec 31 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
javascript 面向对象function详解及实例代码
Feb 28 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
node.js ws模块搭建websocket服务端的方法示例
Apr 25 Javascript
vue多个元素的样式选择器问题
Nov 29 Javascript
详解vite2.0配置学习(typescript版本)
Feb 25 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
PHP实现分页的一个示例
2006/10/09 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php微信支付之APP支付方法
2015/03/04 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
编程语言Python的发展史
2014/09/26 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
物流仓储计划书
2014/01/10 职场文书
HR求职自荐信范文
2014/06/21 职场文书
药店促销活动策划方案
2014/08/24 职场文书
少先队活动总结
2014/08/29 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2014年小学工作总结
2014/11/26 职场文书
同意转租证明
2015/06/24 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
详解Python函数print用法
2021/06/18 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript