想要实现的效果
后端返回的数据格式
要求:expireTime字段的年月日相同的列表放在一起,并且不影响上拉加载下拉刷新
1.首先需要解析后端返回来的数据格式
let newarr = JSON.parse(JSON.stringify(this.DownloadList)) //这个时候newarr还是[]
//循环后端返回的参数,筛选createTime相同的参数
downInfo.data.data.list.forEach((item,index)=>{
// findIndex逐个判断与creaTeTime是否相同
let i = newarr.findIndex(it => it.daytime === item.createTime.split(' ')[0])
console.log(i,"iiiiiiiiiii")
if (i >= 0) {
newarr[i].list.push(item)
} else {
newarr.push({
daytime: item.createTime.split(' ')[0],
list:[item]
})
}
})
console.log(newarr, '=============newarr')
this.DownloadList = newarr //最后给页面渲染参数赋值
解析出来的格式为:
多了一个dayTime字段,这样就可以直接渲染在页面上,其他同样日期的都在下面数组中
2.下拉刷新
接下来开始实现下拉刷新功能
a.下拉刷新之前,需要在当前页面配置一个属性
在page.json中当前页面的路由:"enablePullDownRefresh": true
b.一个直接调用刷新的方法
// 下拉刷新的方法,可以直接使用
onPullDownRefresh(){
this.currentPage = 1 //这个是页码,需要给页码调制第一页
this.DownloadList = [] //循环的列表制空
this.wanderNewPage() //调用类似于从新调用后端接口并且赋值列表的方法
//停止下拉刷新
uni.stopPullDownRefresh();
},
//下载精彩秀页面刷新
async wanderNewPage(){
//下载精彩视频列表
let downInfo = await queryVideoList({
currentPage: this.currentPage, //页码
pageSize: 10 //一条多少页
})
//解析列表
let newarr = JSON.parse(JSON.stringify(this.DownloadList))
downInfo.data.data.list.forEach((item,index)=>{
let i = newarr.findIndex(it => it.daytime === item.createTime.split(' ')[0])
if (i >= 0) {
newarr[i].list.push(item)
} else {
newarr.push({
daytime: item.createTime.split(' ')[0],
list:[item]
})
}
})
console.log(newarr, '=============newarr')
this.DownloadList = newarr
},
onPullDownRefresh这个方法是直接使用的,不需要引入
一定要添加停止刷新的方法,uni.stopPullDownRefresh(); 否则他就会一直转
3.上拉加载
里面有一个自带的触底事件:onReachBottom
onReachBottom() {
this.currentPage ++;
this.wanderNewPage()
},
页面下滑触底之后会直接触发这个事件,然后把页码加一,从新调用方法