微信小程序下拉加载和上拉刷新两种实现方法详解


Posted in Javascript onSeptember 05, 2019

方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新

首先要在json文件里设置window属性

设置js里onPullDownRefresh和onReachBottom方法

下拉加载说明:

当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

onPullDownRefresh(){
console.log('--------下拉刷新-------')

wx.showNavigationBarLoading() //在标题栏中显示加载

wx.request({
     url: 'https://URL',
     data: {},
     method: 'GET',
     // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
     // header: {}, // 设置请求的 header
     success: function(res){
      // success
     },
     fail: function() {
      // fail
     },
     complete: function() {
      // complete
      wx.hideNavigationBarLoading() //完成停止加载
      wx.stopPullDownRefresh() //停止下拉刷新
   }
})

方法二:在scroll-view里设定bindscrolltoupper和bindscrolltolower实现微信小程序下拉

index.wxml

<!--index.wxml-->
 <view class="container" style="padding:0rpx">
  <!--垂直滚动,这里必须设置高度-->
   <scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height:{{scrollHeight}}px;"
     class="list" bindscrolltolower="bindDownLoad" bindscrolltoupper="topLoad" bindscroll="scroll">
     <view class="item" wx:for="{{list}}">
       <image class="img" src="{{item.pic_url}}"></image>
       <view class="text">
         <text class="title">{{item.name}}</text>
         <text class="description">{{item.short_description}}</text>
       </view>
     </view>
   </scroll-view>
   <view class="body-view">
     <loading hidden="{{hidden}}" bindchange="loadingChange">
       加载中...
     </loading>
   </view>
 </view>

index.js

var url = "http://www.imooc.com/course/ajaxlist";
var page =0;
var page_size = 5;
var sort = "last";
var is_easy = 0;
var lange_id = 0;
var pos_id = 0;
var unlearn = 0;
 // 请求数据<br> var loadMore = function(that){
  that.setData({
    hidden:false
  });
  wx.request({
    url:url,<br>    data:{
      page : page,
      page_size : page_size,
      sort : sort,
      is_easy : is_easy,
      lange_id : lange_id,
      pos_id : pos_id,
      unlearn : unlearn
    },
    success:function(res){
      //console.info(that.data.list);
      var list = that.data.list;
      for(var i = 0; i < res.data.list.length; i++){
        list.push(res.data.list[i]);
      }
      that.setData({
        list : list
      });
      page ++;
      that.setData({
        hidden:true
      });
    }
  });
}
Page({
 data:{
  hidden:true,
  list:[],
  scrollTop : 0,
  scrollHeight:0
 },
 onLoad:function(){
  //  这里要注意,微信的scroll-view必须要设置高度才能监听滚动事件,所以,需要在页面的onLoad事件中给scroll-view的高度赋值
   var that = this;
   wx.getSystemInfo({
     success:function(res){
       that.setData({
         scrollHeight:res.windowHeight
       });
     }
   });
    loadMore(that);
 },
 //页面滑动到底部
 bindDownLoad:function(){ 
   var that = this;
   loadMore(that);
   console.log("lower");
 },
 scroll:function(event){
  //该方法绑定了页面滚动时的事件,我这里记录了当前的position.y的值,为了请求数据之后把页面定位到这里来。
   this.setData({
     scrollTop : event.detail.scrollTop
   });
 },
 topLoad:function(event){
  //  该方法绑定了页面滑动到顶部的事件,然后做上拉刷新
   page = 0;
   this.setData({
     list : [],
     scrollTop : 0
   });
   loadMore(this);
   console.log("lower");
 }<br> })

index.wxss

/**index.wxss**/
 
 .userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
 }
 
 .userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
 }
 
 .userinfo-nickname {
  color: #aaa;
}
 
 .usermotto {
  margin-top: 200px;
 }
 
 /**/
 
 scroll-view {
  width: 100%;
 }
 
 .item {
  width: 90%;
  height: 300rpx;
  margin: 20rpx auto;
  background: brown;
  overflow: hidden;
 }
 
 .item .img {
  width: 430rpx;
  margin-right: 20rpx;
  float: left;
 }
 
 .title {
  font-size: 30rpx;
  display: block;
  margin: 30rpx auto;
 }
 
 .description {
 font-size: 26rpx;
  line-height: 15rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 用Node.js写Shell脚本[译]
Sep 20 Javascript
悬浮数字的实现案例
Feb 19 Javascript
Javascript玩转继承(三)
May 08 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
iscroll实现下拉刷新功能
Jul 18 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
详解Vue、element-ui、axios实现省市区三级联动
May 07 Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 Javascript
layui动态加载多表头的实例
Sep 05 #Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 #Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 #Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 #Javascript
JS中比Switch...Case更优雅的多条件判断写法
Sep 05 #Javascript
layer实现弹出层自动调节位置
Sep 05 #Javascript
vue使用i18n实现国际化的方法详解
Sep 05 #Javascript
You might like
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
也说JavaScript中String类的replace函数
2011/09/22 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
详解Python自建logging模块
2018/01/29 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
python程序需要编译吗
2020/06/19 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python爬取抖音视频的实例分析
2021/01/19 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
几个数据库方面的面试题
2016/07/01 面试题
升职自荐信范文
2013/10/05 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
2014年党务公开方案
2014/05/08 职场文书
中学图书馆工作总结
2015/08/11 职场文书
银行求职信范文
2019/05/13 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python
Python实现为PDF去除水印的示例代码
2022/04/03 Python
Python 统计序列中元素的出现频度
2022/04/26 Python