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


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 相关文章推荐
js控制div及网页相关属性的代码
Dec 19 Javascript
js实现飞入星星特效代码
Oct 17 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
Angular.Js的自动化测试详解
Dec 09 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
微信小程序 devtool隐藏的秘密
Jan 21 Javascript
React组件生命周期详解
Jul 03 Javascript
浅谈通过JS拦截 pushState和replaceState事件
Jul 21 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php基础知识:类与对象(1)
2006/12/13 PHP
PHP中cookies使用指南
2007/03/16 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
php发送邮件的问题详解
2015/06/22 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Python标准库inspect的具体使用方法
2017/12/06 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
改革共识倡议书
2014/08/29 职场文书
教师见习报告范文
2014/11/03 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
先进个人推荐材料
2014/12/29 职场文书
学生会招新宣传语
2015/07/13 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers