微信小程序列表渲染功能之列表下拉刷新及上拉加載的示例分析

小編給大家分享一下微信小程序列表渲染功能之列表下拉刷新及上拉加載的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

我們提供的服務(wù)有:網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、襄陽ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的襄陽網(wǎng)站制作公司

效果圖

首先來看看程序效果圖,以下四張圖從左至右依次是:下來刷新動畫、下拉刷新結(jié)果、上劃加載動畫以及上劃加載結(jié)果,程序中的數(shù)據(jù)均為模擬數(shù)據(jù),不包含網(wǎng)絡(luò)請求,所以可以直接運行。

微信小程序列表渲染功能之列表下拉刷新及上拉加載的示例分析

方法一:用scroll-view組件實現(xiàn)

由于最后沒有選擇這種實現(xiàn)方法(下拉刷新有bug),因此只做簡單介紹,當然如果沒有下拉刷新的需求,scroll-view組件實現(xiàn)列表的渲染很方便,從官方文檔可以看到,scroll-view組件集成了以下方法為編程提供很大便捷。

scroll-into-view String 值應為某子元素id,則滾動到該元素,元素頂部對齊滾動區(qū)域頂部
bindscrolltoupper EventHandle 滾動到頂部/左邊,會觸發(fā) scrolltoupper 事件
bindscrolltolower EventHandle 滾動到底部/右邊,會觸發(fā) scrolltolower 事件
bindscroll EventHandle 滾動時觸發(fā) event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

方法二:用page頁面自帶的功能

Page() 函數(shù)用來注冊一個頁面。接受一個 object 參數(shù),其指定頁面的初始數(shù)據(jù)、生命周期函數(shù)、事件處理函數(shù)等。

1、在app.json頁設(shè)置窗口前景色為dark & 允許下拉

"window":{
  "backgroundTextStyle":"dark",
  "navigationBarBackgroundColor": "#000",
  "navigationBarTitleText": "wechat",
  "navigationBarTextStyle":"white",
  "enablePullDownRefresh": true
}

2、在list.json頁設(shè)置允許下拉

{
  "enablePullDownRefresh": true
}

3、利用onPullDownRefresh監(jiān)聽用戶下拉動作

注:在滾動 scroll-view 時會阻止頁面回彈,所以在 scroll-view 中滾動無法觸發(fā)onPullDownRefresh,因此在使用 scroll-view 組件時無法利用page的該特性。

onPullDownRefresh: function() {
 wx.showNavigationBarLoading() //在標題欄中顯示加載
 let newwords = [{message: '從天而降',viewid:'-1',time:util.formatTime(new Date),greeting:'hello'}].concat(this.data.words);
 setTimeout( ()=> {
   this.setData({
     words: newwords
   })
   wx.hideNavigationBarLoading() //完成停止加載
   wx.stopPullDownRefresh() //停止下拉刷新
  }, 2000)
}

4、利用onReachBottom頁面上拉觸底事件

注:,首次進入頁面,如果頁面不滿一屏時會觸發(fā) onReachBottom ,應為只有用戶主動上拉才觸發(fā);手指上拉,會觸發(fā)多次 onReachBottom,應為一次上拉,只觸發(fā)一次;所以在編程時需要將這兩點考慮在內(nèi)。

onReachBottom:function(){
  console.log('hi')
  if (this.data.loading) return;
  this.setData({ loading: true });
  updateRefreshIcon.call(this);
  var words = this.data.words.concat([{message: '土生土長',viewid:'0',time:util.formatTime(new Date),greeting:'hello'}]);
  setTimeout( () =>{
    this.setData({
     loading: false,
     words: words
    })
  }, 2000)
 }
})

5、上劃加載圖標動畫

/**
 * 旋轉(zhuǎn)刷新圖標
 */
function updateRefreshIcon() {
 var deg = 0;
 console.log('旋轉(zhuǎn)開始了.....')
 var animation = wx.createAnimation({
  duration: 1000
 });
 var timer = setInterval( ()=> {
  if (!this.data.loading)
   clearInterval(timer);
  animation.rotateZ(deg).step();//在Z軸旋轉(zhuǎn)一個deg角度
  deg += 360;
  this.setData({
   refreshAnimation: animation.export()
  })
 }, 2000);
}

最后附上布局代碼:

<view wx:for="{{words}}" class="item-container">
  <view class="items">
    <view class="left">
       <view class="msg">{{item.message}}</view>
       <view class="time">{{item.time}}</view>
    </view>
    <view class="right">{{item.greeting}}</view>
  </view>
</view>
<view class="refresh-block" wx:if="{{loading}}">
 <image animation="{{refreshAnimation}}" src="../../resources/refresh.png"></image>
</view>

以上是“微信小程序列表渲染功能之列表下拉刷新及上拉加載的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享標題:微信小程序列表渲染功能之列表下拉刷新及上拉加載的示例分析
文章地址:http://muchs.cn/article18/gdihdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、用戶體驗、商城網(wǎng)站、域名注冊云服務(wù)器、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)