27 商品列表 加载下一页数据
1 用户上滑页面 滚动条触底 开始加载下一页数据
1 找到滚动条触底事件 微信小程序官方开发文档寻找
2 判断还有没有下一页数据
1 获取到总页数 只有总条数
总页数 = Math.ceil(总条数 / 页容量 pagesize)
总页数 = Math.ceil( 23 / 10 ) = 3
2 获取到当前的页码 pagenum
3 判断一下 当前的页码是否大于等于 总页数
表示 没有下一页数据
3 假如没有下一页数据 弹出一个提示
4 假如还有下一页数据 来加载下一页数据
1 当前的页码 ++
2 重新发送请求
3 数据请求回来 要对data中的数组 进行 拼接 而不是全部替换!!!
触底事件
onReachBottom | 页面上拉触底事件的处理函数 | function |
js
onReachBottom(){
console.log("我是有底线的");
}
判断有没有下一页
1 获取到总页数 只有总条数
总页数 = Math.ceil(总条数 / 页容量 pagesize)
总页数 = Math.ceil( 23 / 10 ) = 3
2 获取到当前的页码 pagenum
3 判断一下 当前的页码是否大于等于 总页数
表示 没有下一页数据
js
//要查询的参数
QueryParams:{
query:"",
cid:"",
pagenum:1,
pagesize:10
},
totalPages:1,
async getGoodList(){
//resolve(result.data.message);
const res=await request({url:"/goods/search",data:this.QueryParams});
const total=res.total
this.setData({
goodsList:res.goods
})
},
- 是不是 const 常量变量赋值时是“=”
- ,data:this.QueryParams看不太懂,没申请total,却有total值
onReachBottom(){
if()
console.log("我是有底线的");
}
- 花式打印?
假如还有下一页数据 来加载下一页数据
1 当前的页码 ++
2 重新发送请求
3 数据请求回来 要对data中的数组 进行 拼接 而不是全部替换!!!
this.setData({
goodsList:[...this.data.goodsList,...res.goods]
})
onReachBottom(){
if(this.QueryParams.pagenum>=this.totalPages){
wx.showToast({
title:"我是有底线的"
});
}else{
this.QueryParams.pagenum++;
this.getGoodList();
}
}
下拉刷新页面
1 触发下拉刷新事件 需要在页面的json文件中开启一个配置项
找到 触发下拉刷新的事件 enablePullDownRefresh
2 重置 数据 数组 onPullDownRefresh
3 重置页码 设置为1
4 重新发送请求
5 数据请求回来 需要手动的关闭 等待效果
async getGoodList(){
//resolve(result.data.message);
const res=await request({url:"/goods/search",data:this.QueryParams});
const total=res.total;
this.totalPages=Math.ceil( total / this.QueryParams.pagesize);
this.setData({goodsList:[...this.data.goodsList,...res.goods]})
wx.stopPullDownRefresh();
},
onPullDownRefresh(){
this.setData({goodsList:[]});
this.QueryParams.pagenum=1;
this.getGoodList();
}
加载中的提示图标
export const request = (params) => {
wx.showLoading({
title: "加载中",
mask: true,
});
const baseUrl = "https://api-hmugo-web.itheima.net/api/public/v1";
return new Promise((resolve, reject) => {
wx.request({
...params,
url: baseUrl + params.url,
success: (result) => {
resolve(result.data.message);
},
fail: (err) => {
reject(err);
},
complete:()=>{
wx.hideLoading();
}
})
})
}