我想要實(shí)現(xiàn)的效果是:可以上拉刷新,下拉加載,分別點(diǎn)擊tab都還能夠請(qǐng)求服務(wù)器。我想的最好的方法是把日期和月份這2個(gè)抽離出來(lái)做成一個(gè)方法,然后上拉刷新,下拉加載,點(diǎn)擊tab分別調(diào)用日期和月份方法即可。我嘗試百度/google,見(jiàn)到最多的鏈?zhǔn)綄懛ǎ垣@取用戶數(shù)據(jù)舉例:
-
//這里的操作都是舉例說(shuō)明。
-
wxLogin()
-
.then(=>res{
-
console.log(res.code)
-
return wxRequest.getUserOpenId(url, params)//請(qǐng)求獲取用戶ID
-
})
-
.then(=>res{
-
console.log(res.openId)
-
return wxRequest.getUserPhone());//請(qǐng)求獲取用戶手機(jī)
-
})
-
.catch()
在index.js頁(yè)面 ; getUserOpenId()和getUserPhone()都是封裝在另外一個(gè)js里面的?;蛘呤侵苯觛etUserMessage().then(res=>).catch();這樣直接獲取用戶數(shù)據(jù)了。
-
wxRequest.getUserMessage()
-
.then(=>res{
-
console.log(res.code);
-
})
-
.catch()
當(dāng)然我這樣舉例還是不能說(shuō)明存在什么問(wèn)題,那么如果我要像上面圖那樣獲取日期數(shù)據(jù),月份數(shù)據(jù)怎么辦呢?難道按照第一個(gè)那樣寫,上拉加載那里寫一堆,下拉刷新那里一堆,切換tab也寫一堆重復(fù)的代碼?還是說(shuō)我管你是上拉刷新,還是下拉加載好,我直接通過(guò)一個(gè)接口在一起獲取數(shù)據(jù)?所以我通過(guò)百度/google到他們寫的還不夠完善(不是寫的不好哈) 我的寫法:
-
//我只是抽取我部分代碼來(lái)展示
-
Page({
-
data:{
-
-
},
-
onLoad: function () {//生命周期
-
this.readUserMesage();
-
},
-
readUserMesage(): function () {//獲取用戶信息,并獲取按日期的數(shù)據(jù)
-
this.showLoading();
-
let parameters = 'user?ptId=aaaaaaaaaaaaaa';
-
api.getRequest({
-
parameters: parameters,
-
}).then(res => {
-
return this.readDayData(); //獲取日期信息
-
}).catch(error => {
-
this.hideLoading();
-
});
-
},
-
readMonthData() {//把月份單獨(dú)抽取出來(lái)
-
var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
-
var parameters = { parameters: url }
-
return api.getRequest(parameters)//我這里是封裝請(qǐng)求服務(wù)器的,注意我加了return
-
.then(res => {
-
//這里就可以獲取到返回的res的集合數(shù)據(jù)
-
}).catch(error => {
-
console.log(JSON.stringify(error));
-
this.hideLoading();
-
});
-
},
-
readDayData() {//把日期單獨(dú)抽取出來(lái)
-
var url = 'dailypay?xxxxx=aaaa&yyy=bbbbbb';
-
var parameters = { parameters: url }
-
return api.getRequest(parameters)//我這里是封裝請(qǐng)求服務(wù)器的,注意我加了return
-
.then(res => {
-
//這里就可以獲取到返回的res的集合數(shù)據(jù)
-
}).catch(error => {
-
this.hideLoading();
-
});
-
},
-
onPullDownRefresh() {//下拉刷新
-
if (this.data.currentIndex == 0) {//如果當(dāng)前是在日期
-
this.readDayData();
-
} else {//如果當(dāng)前是在月份
-
this.readMonthData();
-
}
-
},
-
onReachBottom() {//上拉加載
-
if (this.data.currentIndex == 0) {
-
this.readDayData();
-
} else {
-
this.readMonthData();
-
}
-
},
-
)}
好了,我的方法介紹完成了。這樣做就可以減少代碼量了。
|