国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序列表渲染功能之列表下拉刷新及上拉加載的實(shí)現(xiàn)方法分析

2019-11-19 14:51:41
字體:
供稿:網(wǎng)友

本文實(shí)例講述了微信小程序列表渲染功能之列表下拉刷新及上拉加載的實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

微信小程序?yàn)?017年1月9日打下了一個(gè)特殊的標(biāo)簽,迅速刷爆了網(wǎng)絡(luò)和朋友圈,最近我也寫了一個(gè)demo程序體驗(yàn)一把。微信小程序和vuejs有些像,都是數(shù)據(jù)驅(qū)動(dòng)視圖&單向數(shù)據(jù)綁定,而其體驗(yàn)要比H5頁面好很多,這得益于微信環(huán)境的支持以及首次運(yùn)行時(shí)同時(shí)加載所有頁面的處理。本文將分享微信小程序列表的下拉刷新和上劃加載的實(shí)踐。

效果圖

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

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

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

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

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

Page() 函數(shù)用來注冊一個(gè)頁面。接受一個(gè) 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)聽用戶下拉動(dòng)作

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

onPullDownRefresh: function() { wx.showNavigationBarLoading() //在標(biāo)題欄中顯示加載 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頁面上拉觸底事件

注:,首次進(jìn)入頁面,如果頁面不滿一屏?xí)r會(huì)觸發(fā) onReachBottom ,應(yīng)為只有用戶主動(dòng)上拉才觸發(fā);手指上拉,會(huì)觸發(fā)多次 onReachBottom,應(yīng)為一次上拉,只觸發(fā)一次;所以在編程時(shí)需要將這兩點(diǎn)考慮在內(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、上劃加載圖標(biāo)動(dòng)畫

/** * 旋轉(zhuǎn)刷新圖標(biāo) */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)一個(gè)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>

希望本文所述對(duì)大家微信小程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽宁省| 绍兴市| 镇原县| 泉州市| 广宗县| 周至县| 富蕴县| 舞阳县| 沙湾县| 铁岭县| 黄浦区| 沅陵县| 小金县| 新闻| 广州市| 西平县| 福泉市| 若尔盖县| 蓝田县| 姜堰市| 神木县| 奇台县| 清丰县| 南投市| 凤冈县| 镇巴县| 贵定县| 文昌市| 青铜峡市| 金山区| 静安区| 新河县| 淮滨县| 封开县| 通山县| 天台县| 茶陵县| 仪陇县| 安新县| 衡水市| 南昌市|