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


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语句可以不以;结尾的烦恼
Mar 08 Javascript
JS之小练习代码
Oct 12 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
jQuery中live方法的重复绑定说明
Oct 21 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
js判断当前页面在移动设备还是在PC端中打开
Jan 06 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
Sep 23 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
js实现自动播放匀速轮播图
Feb 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
解决中英文字符串长度问题函数
2007/01/16 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python使用剪切板的方法
2017/06/06 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
python dict 相同key 合并value的实例
2019/01/21 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
np.random.seed() 的使用详解
2020/01/14 Python
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
市场部专员岗位职责
2013/11/30 职场文书
银行工作检查书范文
2014/01/31 职场文书
请假条格式范文
2014/04/10 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
小学思想品德教学反思
2016/02/24 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android