1.思路
在微信小程序中提供了下拉刷新的api(onPullDownRefresh()),那么實現下拉刷新的業務就是再下拉的時候,在原有的數據中追加新的數據
2.代碼實現
2.1 坑一
onPu" />
在微信小程序中提供了下拉刷新的api(onPullDownRefresh()),那么實現下拉刷新的業務就是再下拉的時候,在原有的數據中追加新的數據
2.1 坑一
onPullDownRefresh: function () {
var _this =this;
/**顯示loading */
wx.showNavigationBarLoading();
_this.newsrequest(_this.data.page);
wx.stopPullDownRefresh();
wx.hideNavigationBarLoading();
// console.log(_this.data.newslists)
},
/**請求數據 */
newsrequest:function(page){
var _this=this;
// console.log(_this.data.page)
requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
var result = _this.newsdatadecorate(data.data.data.list);
console.log(page)
console.log(result)
var arr=_this.data.newslists;
if (result.length>0){
/*此時會發現數據被添加到原有數據的后邊類似上拉加載更多*/
_this.setData({
newslists: _this.data.newslists.concat(result)
});
_this.data.page++;
}
})
},
我們知道數組的concat方法時講參數數組拼接到原有數據后邊,所以與我們想要的追加在前面不想符合,想想該數組前面追加的方法時unshift()更改代碼:
2.2坑二
有人說concat方法時在數據后邊追加,那么只要再使用數組反轉reverse()將數組反轉,仔細想想,這種數據不是我們想要的下拉刷新的
var arr1 = [1,2,3,4];//原來的數據
var arr2 = [5,6,7,8];//后來的數據
var arr3 = arr1.concat(arr2);//[1,2,3,4,5,6,7,8];
var arr4 = arr3.reverse();//[8,7,6,5,4,3,2,1]
//但是我們想要的應該是
var arr5 =[5,6,7,8,1,2,3,4]
newsrequest:function(page){
var _this=this;
// console.log(_this.data.page)
requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
var result = _this.newsdatadecorate(data.data.data.list);
console.log(page)
console.log(result)
var arr=_this.data.newslists;
if (result.length>0){
_this.setData({
newslists: _this.data.newslists.concat(result).reverse()
})
_this.data.page++;
}
})
},
2.2坑三
newsrequest:function(page){
var _this=this;
// console.log(_this.data.page)
requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
var result = _this.newsdatadecorate(data.data.data.list);
console.log(page)
console.log(result)
var arr=_this.data.newslists;
if (result.length>0){
for(var t in result){
_this.data.newslists.unshift(result[t])
}
_this.data.page++;
}
})
},
但是頁面的數據不顯示,具體原因不詳,應該是this.data.方法設置數據,應該和頁面的生命周期有關,在數據設置時,頁面已渲染,(自己想想的,不知道對不對)
這是我們就可以通過中介,將數據拼接好了之后,再通過this.setData()方法設置數據,這時就可以正常顯示
newsrequest:function(page){
var _this=this;
// console.log(_this.data.page)
requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
var result = _this.newsdatadecorate(data.data.data.list);
var arr=_this.data.newslists;
if (result.length>0){
for(var v in result){
arr.unshift(result[v])
};
_this.setData({
newslists:arr
});
_this.data.page++;
}
})
},
上述方案雖然成功了實現了數據追加,但是。。。且看下邊代碼
var arr1 = [1,2,3,4];//原來的數據
var arr2 = [5,6,7,8];//后來的數據
var arr3 = arr2.concat(arr1);//[5,6,7,8,1,2,3,4];
//但是我們想要的應該是
var arr5 =[5,6,7,8,1,2,3,4]
//此時兩個數據是不是一致的呢
newsrequest:function(page){
var _this=this;
// console.log(_this.data.page)
requstFfunc.requestData('https://xxxx.cn/Public/Api/index.php', { service: 'Default.Archives', typeid: '44', orderby: '4', page:page, pagesize: '10' }).then(function (data) {
var result = _this.newsdatadecorate(data.data.data.list);
console.log(page)
console.log(result)
var arr=_this.data.newslists;
if (result.length>0){
_this.setData({
newslists: result.concat(_this.data.newslists)
});
_this.data.page++;
}
})
},
最新動態
常見問題百寶箱
A2014,有位學妹不顧家人反對,在上海這個國際化大都市謀了一個公眾號助理的職位。斗志昂揚地奮斗了 3 年,我眼看著她的內容駕馭能力突飛猛進,內容質量從三流到一流,職位
A文章主要分析了不同的視覺設計元素是如何影響網站用戶體驗,希望通過文章的解讀能夠對你的產品設計帶來些啟發。 也許是因為我在視覺設計上沒有太多經驗,我發現
A雙贏系統建站系統,三網同步,建站推廣一步到位雙贏系統建站系統,三網同步,建站推廣一步到位雙贏系統建站系統,三網同步,建站推廣一步到位雙贏系統建站系統,三網同步,建站推
Copyright 2013-2020 All Rights Reserved 武漢互贏網絡科技股份有限公司 鄂ICP備19027860號