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


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在多浏览器下for循环的使用方法
Nov 07 Javascript
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
node使用UEditor富文本编辑器的方法实例
Jul 11 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
Vue实现用户自定义字段显示数据的方法
Aug 28 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
如何从头实现一个node.js的koa框架
Jun 17 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 解决扫描二维码下载跳转问题
2017/01/13 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
python 消费 kafka 数据教程
2019/12/21 Python
精灵市场:Pixie Market
2019/06/18 全球购物
大型晚会策划方案
2014/02/06 职场文书
生产部岗位职责范文
2014/02/07 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
教师个人师德总结
2015/02/06 职场文书
交通安全温馨提示语
2015/07/14 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
SpringBoot生成License的实现示例
2021/06/16 Java/Android
OpenCV 图像梯度的实现方法
2021/07/25 Python
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js