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


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 相关文章推荐
Jquery选择器 $实现原理
Dec 02 Javascript
jquery tab插件精简版分享
Sep 10 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
js实现微信分享代码
Oct 11 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
jQuery遍历节点树方法分析
Sep 08 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 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
浅析PHP水印技术
2007/02/14 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
javascript编写简易计算器
2017/05/06 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
Python 3中的yield from语法详解
2017/01/18 Python
使用TensorFlow实现SVM
2018/09/06 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python3处理word文档实例分析
2020/12/01 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
工作失误检讨书范文大全
2014/01/13 职场文书
法制宣传日活动总结
2014/04/29 职场文书
上海世博会口号
2014/06/19 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2014财务年终工作总结
2014/12/08 职场文书
教代会闭幕词
2015/01/28 职场文书