1: 建立api.js
const api = {
top: 'https://api.douban.com/v2/movie/top250',
detail: 'https://api.douban.com/v2/movie/subject/',
hot: 'https://api.douban.com/v2/movie/in_theaters',
search: 'https://api.douban.com/v2/movie/search'
}
module.exports = api;
2: 在app.js中建立封裝請求數據的方法
const conf = {
// 全局數據對象與方法(整個應用程序共享)
globalData: {
hasLogin: false,
},
fetch(url,data, callback) {
wx.request({
url,
data: data,
header: {
'Content-Type': 'application/json'
},
success(res) {
callback(null, res.data);
},
fail(e) {
callback(e);
}
})
},
// 程序啓動時觸發一次
onLaunch() {
console.log('App Launch');
},
// 當程序進入前臺狀態時觸發
onShow() {
console.log('App Show');
},
// 當程序進入後臺狀態時觸發
onHide() {
console.log('App Hide');
}
};
// App() 函數建立應用程序對象
App(conf);
3: 在子頁面中調用封裝的方法請求數據
import API from "../../api/api.js";
const app = getApp();
const conf = {
data:{
title:'正在拼命加載中...',
movies:[],
loadding:true
},
onLoad (){
app.fetch(API.hot,{},(err,data) => {
this.setData({
title:data.title,
movies: data.subjects,
loading: false
})
})
},
onReady(){
wx.setNavigationBarTitle({
title: '熱映',
});
}
};
Page(conf);
4: 帶參數請求數據
//上拉加載更多數據
downLoad:function(e) {
var self = this,
nextPage = self.data.nextPage,
category = self.data.category,
tabIndex = self.data.tabIndex,
tipShow = self.data.tipShow,
pageIndex = Number(self.data.pageIndex),
data = {
nextPage : nextPage,
ti : tabIndex,
ft : category,
page : pageIndex
};
if(!tipShow) {
//判斷是否有更多數據
app.requestData(API.listPage,data,(err, data) => {
if(data != null) {
var resData = data.lst,
nextPage = JSON.stringify(data.nextPage);
self.setData({
pageIndex : pageIndex + 1,
nextPage : nextPage,
list : self.data.list.concat(self.dataRead(resData))
});
} else {
self.setData({
tipShow : true
});
}
});
}
},