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


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 相关文章推荐
从Ajax到JQuery Ajax学习
Feb 14 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
Sep 11 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
Jun 28 Javascript
原生JS实现加入收藏夹的代码
Oct 24 Javascript
JavaScript中document.forms[0]与getElementByName区别
Jan 21 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
JS图片预加载插件详解
Jun 21 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
分析javascript原型及原型链
Mar 18 Javascript
vue select 获取value和lable操作
Aug 28 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
laravel如何开启跨域功能示例详解
2017/08/31 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
简单谈谈json跨域
2016/03/13 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python实现学生信息管理系统
2020/04/05 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
用python批量下载apk
2020/12/29 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
幼儿园招生广告
2014/03/19 职场文书
防暑降温通知书
2015/04/27 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
python实现高效的遗传算法
2021/04/07 Python