微信小程式 下拉重新整理/上拉載入更多 (上拉載入更多怎麼實現)
阿新 • • 發佈:2019-01-31
實現原理:
1、下拉重新整理:由於小程式資料是實時渲染的。我們把data{}內的資料清空重新載入即可實現下拉重新整理。
2、上拉載入更多(頁面上拉觸底事件):新獲取的資料追加到data{}內的原資料即可。由於小程式資料是實時渲染,小程式在保持原資料顯示不變的基礎上,自動追加渲染顯示新資料。
注意(小程式官方有說明):
1、上拉載入更多 不要用scroll-view,用普通的view即可。
2、下拉重新整理需要在 當前頁面.json 裡配置
{
"enablePullDownRefresh": true
}
3、page()屬性裡有兩個屬性是關於頁面下拉重新整理 和 上拉載入更多的:
onPullDownRefresh Function 頁面相關事件處理函式–監聽使用者下拉動作
onReachBottom Function 頁面上拉觸底事件的處理函式
文章列表頁的demo程式碼:
index.wxml
<!--pages/home/index.wxml-->
<view class='container' wx:for="{{articles}}">
<!-- 文章列表 -->
<view bindtap="onArticle" data-aid="{{item.id}}">
<view class='a-title '>{{item.title}}</view>
<image class='a-thumb' src="{{item.thumb}}" mode="widthFix"></image>
</view>
</view>
index.js
//pages/home/index.js
var page=0;//分頁標識,第幾次下拉,使用者傳給後臺獲取新的下拉資料
Page({
data: {
articles: [],//文章列表陣列
},
// 頁面載入
onLoad: function () {
this.clearCache();//清本頁快取
this.getArticles(0);//第一次載入資料
},
// 下拉重新整理
onPullDownRefresh: function () {
this.clearCache();
this.getArticles(0);//第一次載入資料
},
// 頁面上拉觸底事件(上拉載入更多)
onReachBottom: function () {
this.getArticles(page);//後臺獲取新資料並追加渲染
},
// 清快取
clearCache:function(){
page = 0;//分頁標識歸零
this.setData({
articles: [] //文章列表陣列清空
});
},
/**************** 介面點選 *****************/
// 文章點選跳轉詳情頁
onArticle:function(){
//業務邏輯
},
/**************** 網路請求 *****************/
/**
* 獲取文章列表
* @param {int} pg 分頁標識 預設0
*/
getArticles: function (pg) {
//設定預設值
pg = pg ? pg : 0;
var that = this;
var apiUrl = 'http://www.zhipur.com/Api/Article/getArticles';//文章列表介面地址
var postData = {
page: pg,//分頁標識
app_version: 1.2,//當前版本,後臺根據版本不同給出不同的資料格式
}
wx.request({
url: apiUrl,
data: postData,
method: 'POST',
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: function (res) {
if (res.data.status == 1) {//成功
var tmpArr = that.data.articles;
// 這一步實現了上拉載入更多
tmpArr.push.apply(tmpArr,res.data.data);
that.setData({
articles: tmpArr
})
page++;
} else {//失敗
console.log(res.data.info);
}
},
fail: function (e) {
console.log(e);
}
})
},
})