1. 程式人生 > >微信小程式下拉上拉分頁功能實現

微信小程式下拉上拉分頁功能實現

js

//index.js
const config = require('../../utils/config.js')
//獲取應用例項
const app = getApp()

Page({

  /**
   * 頁面的初始資料
   */
  data: {
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    pageNum:1,
    pageSize:30,
    hasMoreData: true,
    contentlist: [],
  },

  /**
   * 生命週期函式--監聽頁面載入
   */
  onLoad: function (options) {
    var userInfo = wx.getStorageSync(config.USERINFO);
    if (userInfo!=null) {
      this.setData({
        userInfo: userInfo,
        hasUserInfo: true
      })
      //請求和渲染資料
      // 頁面初始化 options為頁面跳轉所帶來的引數
      var that = this
     that.getContentInfo('正在載入資料...')
      

    } else  {
      wx.redirectTo({
        url: '../login/login',
      })
    } 
  },

  /**
   * 生命週期函式--監聽頁面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命週期函式--監聽頁面顯示
   */
  onShow: function () {
    
  },

  /**
   * 生命週期函式--監聽頁面隱藏
   */
  onHide: function () {
    
  },

  /**
   * 生命週期函式--監聽頁面解除安裝
   */
  onUnload: function () {
    
  },

  /**
   * 頁面相關事件處理函式--監聽使用者下拉動作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 頁面上拉觸底事件的處理函式
   */
  onReachBottom: function () {
    
  },

  /**
   * 使用者點選右上角分享
   */
  onShareAppMessage: function () {
    
  },
  
  getContentInfo: function (message) {
    wx.showLoading({
      title: message,
    })
    var sessionKey = wx.getStorageSync(config.TOKEN_KEY);
    console.log(sessionKey);
    var that = this;
    wx.request({
      url: config.getFullurl("/getContentList"),
      method: "POST",
      data: {
        pageNum: that.data.pageNum,
        pageSize:that.data.pageSize
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded',
        'WX_TOKEN': sessionKey
      },
      success: function (res) {
        var contentlistTem = that.data.contentlist;
        if(res.data.status==200){
          if (that.data.pageNum == 1) {
            contentlistTem = []
          }
          var contentlist = res.data.data.pageData;
          if (that.data.pageNum >= res.data.data.pageInfo.pageCount){
            that.setData({
              contentlist: contentlistTem.concat(contentlist),
              hasMoreData: false
            })
          }else{
            that.setData({
              contentlist: contentlistTem.concat(contentlist),
              hasMoreData: true,
              pageNum: that.data.pageNum + 1
            })
          }

        }else{
          wx.showToast({
            title: res.data.msg,
            success:function(){
              wx.redirectTo({
                url: '../login/login',
              })
            }
          })
        }


      },
      fail:function(){
        wx.showToast({
          title: '載入資料失敗',
          icon: none
        })
      },
      complete:function(){
        wx.hideLoading();
        // complete
        wx.hideNavigationBarLoading() //完成停止載入
        wx.stopPullDownRefresh() //停止下拉重新整理
      }
    })
  },
  /**
 * 頁面相關事件處理函式--監聽使用者下拉動作
 */
  onPullDownRefresh: function () {
    console.log('下拉');
    wx.showNavigationBarLoading() //在標題欄中顯示載入
    this.data.pageNum = 1
    this.getContentInfo('正在重新整理資料')
  },
  /**
   * 頁面上拉觸底事件的處理函式
   */
  onReachBottom: function () {
    if (this.data.hasMoreData) {
      this.getContentInfo('載入更多資料')
    } else {
      wx.showToast({
        title: '沒有更多資料',
      })
    }
  },
  suo: function (e) {
    wx.navigateTo({
      url: '../search/search',
    })
  },
})

wxml

<!--index.wxml-->
<view class="container">
  <view class='page_row' bindtap="suo">
    <view class="search">
      <view class="df search_arr">
        <icon class="searchcion" size='20' type='search'></icon>
        <input class="" disabled placeholder="搜尋" value="{{searchValue}}"/>
      </view>
    </view>
    <!-- <view class='sousuo'>搜尋</view> -->
  </view>
  <!-- <view class="userinfo">
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
  </view> -->
  <!-- <block wx:for="{{contentlist}}" wx:for-item="item" wx:key="content_id" >
  <navigator url="/pages/detail/detail?contentId={{item.content_id}}">
   <view> {{item.content_id+"---"+item.title}} </view>
   </navigator>
   </block>-->
</view> 

<view class="list" wx:for="{{contentlist}}" wx:for-item="item" wx:key="content_id" >
<navigator url="/pages/detail/detail?contentId={{item.content_id}}">
     <view class="list-item list-item-middle">
       <view class="f-b f-black">{{item.content_id}}</view>
        <view class="f-gray">{{item.title}}</view>
    </view>
   <view class="list-item list-item-right">
      <view class="f-gray f30"> {{item.release_date}}</view>
    
    </view>
    </navigator>
</view>

相關推薦

程式-scroll-view多次觸發載入事件

之前那篇部落格裡邊寫了滑塊的margin屬性影響了滑動效果。這篇文章寫一下上拉時多次觸發上拉載入事件。 (改好的程式碼如下) 其實也比較簡單,就是有可能沒有意識到這個小細節。在官方文件中有這麼一個屬性(如圖)。這個屬性是設定距離底部多少距離是觸發事件。我們吧這個屬性設定成0就可以了。只有上拉到最

程式雲開發之資料雲函式

微信小程式雲開發之資料分頁雲函式 2018-10-06 20:23:28       微信小程式的雲開發可以自己對資料庫進行操作而不需要後臺,那麼很常見的一

程式重新整理和載入

example One:如果所有頁面都要開啟下拉重新整理功能: aap.json中: "window":{       "enablePullDownRefresh":true, //開啟下拉重新整理功能       "navigatio

程式載入和重新整理兩種實現方法

方法一:onPullDownRefresh和onReachBottom方法實現小程式下拉載入和上拉重新整理 首先要在json檔案裡設定window屬性             屬性  

程式重新整理、載入

下拉重新整理: (1)直接呼叫onPullDownRefresh:function()事件,首先設定app.js以及有該需求的頁面json檔案中的 “enablePullDownRefresh”: true, //允許下拉重新整理 “backgroundTextStyle”: “dar

程式重新整理載入

1.使用scroll-view實現下拉重新整理上拉載入 <scroll-view scroll-y="true" style="height:{{scrollHeight}}px;" class="list" bindscrolltolower="b

程式功能實現

js //index.js const config = require('../../utils/config.js') //獲取應用例項 const app = getApp() Page({ /** * 頁面的初始資料 */ data: {

程式 重新整理/載入更多 (載入更多怎麼實現

實現原理: 1、下拉重新整理:由於小程式資料是實時渲染的。我們把data{}內的資料清空重新載入即可實現下拉重新整理。 2、上拉載入更多(頁面上拉觸底事件):新獲取的資料追加到data{}內的原

程式

微信小程式元件裡沒有下拉框,正好要用到,記下來以後參考 wxml程式碼 <view class='top'> <view class='top-text'> 選擇接收班級</view> <!-- 下拉框 --> <view

程式——重新整理(

1、先定義兩個變數:   // 分頁,載入 hasMoreData:true, globalPage:0,  2、函式處理:   3、與後臺互動:  1)、在獲取列表的方法裡面,將下面兩個引數以及其他所需

程式框之二維陣列或物件

js檔案 Page({ data:{ //戶型 這是一個本地的物件,然後繫結到頁面上 pic_array: [ { id: 13, name: ‘1室1廳1衛‘ }, { id: 14, name: ‘1室2廳1衛‘ }, { id:

程式列表選單

效果圖:   1.wxml   2.wxss .list-msg {  padding: 0 10rpx; background-color: #fff; position: relative; width: 90%;

自定義程式選擇框元件

預覽效果圖:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ======================================================== 首先要新建一個元件 1.在想要的位置上新建一個目錄 2.在該目錄中 右鍵 → 新建一個Comp

程式選項,回撥輸入框

wxml: <view class='select_box'>     <view class='select' catchtap='selectTap'>         <text class='select_text'>{{sele

程式-選單

轉載地址 目錄 一、效果圖 三、原始碼 一、效果圖 二、實現原理 跟網頁的下拉列表實現是一樣的,剛剛開始預設下拉的內容的是不顯示的(display:none),

程式重新整理onPullDownRefresh和程式分享轉發onShareAppMessage

       在訂單處理中,當前的訂單不一定能夠及時顯示最新的訂單資訊,所以使用者需要能夠通過下拉及時重新整理頁面達到重新整理個人訂單的工嗯呢該。為了使使用者能夠把當前小程式一鍵分享給好友時,我們需要加一個小程式頁面轉發的功能。今天將主要講解這下拉重新整理和分享轉發兩個功能

程式重新整理

1.在要重新整理的介面的XXX.json中設定enablePullDownRefresh設為true    "enablePullDownRefresh": true 2.利用onPullDownRefresh函式定義下拉動作並結合wx.request()向後臺請求資料更新

程式選擇框—相當於網頁的select

index.html <view class='select_box'> <view class='select' catchtap='selectTap'>

程式重新整理時頂部tab元素不隨著移動

頂部tab元素用fixed固定,設定了top屬性。發下在微信小程式中使用onPullDownRefresh()時,頂部tab元素不隨著下拉操作移動。所以將tab元素的top屬性取消,這樣就可以實行頂部t

程式 選單切換 篩選條件

wxml:<!-- 下拉選單 --> <view id="swiper-tab"> <view class="swiper-tab"> <view class="swiper-tab-list {{curr