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


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 相关文章推荐
jQuery获取注册信息并提示实现代码
Apr 21 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
浅谈Node.js中的定时器
Jun 18 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
jQuery实现简单的tab标签页效果
Sep 12 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 Javascript
PHP 502bad gateway原因及解决方案
Nov 13 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
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
keras topN显示,自编写代码案例
2020/07/03 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
python实现双人五子棋(终端版)
2020/12/30 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
HTML5 与 XHTML2
2008/10/17 HTML / CSS
小学毕业家长寄语
2014/01/19 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
环保倡议书100字
2014/05/15 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书