请先看Promise分装wx.request,否则可能看不懂以下内容
如const app=getApp()
app.http.list('pop',this.data.pageNo).then(res => {}
点击上方一步一步走
<scroll-view scroll-y lower-threshold="100" bindscrolltolower="scrollToLower" style="height: 100vh;">
//中间是数据
<view style="text-align: center;margin: 10px;">
<view wx:if="{{loading}}">加载中...</view>
<view wx:if="{{noMore}}">没有更多了</view>
<view wx:if="{{loadingFailed}}">数据加载失败,请重试</view>
</view>
</scroll-view>
// pages/home/home.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
list: [],
pageNo: 1,
loading: false,
loadingFailed: false,
noMore: false,
},
//到达底部
scrollToLower: function (e) {
if (!this.data.loading ){
this.setData({
loading: true,
pageNo: this.data.pageNo + 1
})
this.getData(true);
}
},
//请求数据
getData(isPage) {
//请求
app.http.list('pop',this.data.pageNo).then(res => {
this.setData({
loading: false
})
// if (err) {//返回失败
// this.setData({
// loadingFailed: true
// })
// return false;
// }
if (res.data.data.page ) {
if (isPage) {
//下一页的数据拼接在原有数据后面
this.setData({
list: this.data.list.concat(res.data.data.list)
})
} else {
//第一页数据直接赋值
this.setData({
//list: res.data.data.list
})
}
//如果返回的数据为空,那么就没有下一页了
if (res.data.data.list.length == 0) {
this.setData({
noMore: true
})
}
} else {
//返回失败
this.setData({
loadingFailed: true
})
}
})
},
})