1. 程式人生 > >微信小程式上拉重新整理和下拉載入2種方法實現

微信小程式上拉重新整理和下拉載入2種方法實現

微信小程式上拉重新整理和下拉載入2種方法實現,onPullDownRefresh,scroll-view使用

一、XXX.json開啟下拉重新整理

{
   "enablePullDownRefresh": true
}
 

二、XXX.js

onPullDownRefresh實現下拉重新整理 

手動下拉觸發onPullDownRefresh函式

  //product2獲取資料
  loadProduct2: function () {
    var that = this;
    wx.request(OBJECT)//發起網路請求。使用前請先閱讀說明。


  },
 

  //下拉重新整理
  onPullDownRefresh:function(){
    console.log("重新整理"); 
 
    wx.setNavigationBarTitle({
      title: '重新整理中……'
    })//動態設定當前頁面的標題。
 
    wx.showNavigationBarLoading();//在當前頁面顯示導航條載入動畫。
 
    this.loadProduct2();//重新載入產品資訊


 
    wx.hideNavigationBarLoading();//隱藏導航條載入動畫。
 
    wx.stopPullDownRefresh();//停止當前頁面下拉重新整理。
 
    console.log("關閉");
 
    wx.setNavigationBarTitle({
      title: '寸草心+'
    })//動態設定當前頁面的標題。
    
  }  

wx.startPullDownRefresh(Object object)

基礎庫 1.5.0 開始支援,低版本需做相容處理

開始下拉重新整理。呼叫後觸發下拉重新整理動畫,效果與使用者手動下拉重新整理一致。

引數

Object object

屬性 型別 預設值 必填 說明 最低版本
success function   介面呼叫成功的回撥函式  
fail function   介面呼叫失敗的回撥函式  
complete function   介面呼叫結束的回撥函式(呼叫成功、失敗都會執行)  

示例程式碼

wx.startPullDownRefresh()

 

 

scroll-view 實現上拉重新整理和下拉載入

注:轉自---暱稱:蘇桃子~http://www.cnblogs.com/simba-lkj/p/6274232.html

橙子UI:新增標註,讓小白更易懂

一、XXX.wxml檔案

<!--pages/ceshi/ceshi.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>

 

二、XXX.wxss檔案

 

/* pages/ceshi/ceshi.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;
 }
三、XXX.js檔案

 

// pages/ceshi/ceshi.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;
 
// 請求資料
var loadMore = function (that) {
  that.setData({
    hidden: false
  });
  wx.request({
    url: url,
    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) {
      
      var list = that.data.list;
      console.info("list資料長度:" + list.length);
      for (var i = 0; i < res.data.list.length; i++) {
        list.push(res.data.list[i]);
      }
      that.setData({
        list: list
      });
      console.info("之前page==:" + page);
      page++;
      console.info("目前page==:" + page);
      that.setData({
        hidden: true
      });
    }
  });
}
Page({
  /**
   * 頁面的初始資料
   */
  data: {
    hidden: true,
    list: [],
    scrollTop: 0,
    scrollHeight: 0
  },
  /**
   * 生命週期函式--監聽頁面載入
   */
  onLoad: function (options) {
    //   這裡要注意,微信的scroll-view必須要設定高度才能監聽滾動事件,所以,需要在頁面的onLoad事件中給scroll-view的高度賦值
    var that = this; 
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          scrollHeight: res.windowHeight 
        });
        console.log("裝置高度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
    });
    console.log("滾動時觸發scrollTop==" + event.detail.scrollTop);
  },
  topLoad: function (event) {
    //   該方法綁定了頁面滑動到頂部的事件,然後做上拉重新整理
    page = 0;
    this.setData({
      list: [],
      scrollTop: 0
    });
    loadMore(this);
    console.log("重新載入");
  },
  /**
   * 生命週期函式--監聽頁面初次渲染完成
   */
  onReady: function () {
  },
  /**
   * 生命週期函式--監聽頁面顯示
   */
  onShow: function () {
  },
  /**
   * 生命週期函式--監聽頁面隱藏
   */
  onHide: function () {
  },
  /**
   * 生命週期函式--監聽頁面解除安裝
   */
  onUnload: function () {
  },
  /**
   * 頁面相關事件處理函式--監聽使用者下拉動作
   */
  onPullDownRefresh: function () {
  },
  /**
   * 頁面上拉觸底事件的處理函式
   */
  onReachBottom: function () {
  },
  /**
   * 使用者點選右上角分享
   */
  onShareAppMessage: function () {
  }
})
參考原文地址:https://blog.csdn.net/cplvfx/article/details/78355866