微信小程序列表下拉刷新上拉加载
在微信小程序当中我们经常会遇到一些列表,而我们会经常在其他app或者其他小程序当中遇到当前列表可以一直往下滑动,而在顶部下拉时又会重新加载新的内容,而我们要做出这种效果的话就需要在小程序的方法中加入网络请求
我们需要在js中将网络请求方法封装为一个独立函数
//列表显示
lb:function(){
wx.request({
//网络请求
url:'http://116.62.201.243:8080/wxxcx/goods/getGoodsByPage',
method:"POST",
data:{
page:page,
pageSize:10
},
//回调成功函数
success:(res)=>{
console.log(res)
var list=res.data.data
console.log("list",list)
var lists=this.data.data
console.log("lists",lists)
//判断返回字段是否存在
if(list === undefined){
//无返回值提示弹窗
wx.showToast({
title: '数据加载完成',
})
}else{
//有返回值将返回值推入原有数组中
if(page===1){
lists=list
console.log("lists",lists)
}else{
for(var i=0;i<list.length;i++){
data.push(lists[i])
}
}
}
//将数据放入data中
this.setData({
data:list
})
}
})
},
这样的话可以在其他方法中随意调用此方法,省去多行代码
上拉加载
而上拉加载数据需要在页面json中设置onReachBottomDistance属性(距页面底部多少像素触发页面上拉触底事件的处理函数)
而在上拉触底事件内直接调用此函数就可以了
onReachBottom: function () {
//用户每次下拉页面值加一
page++
//设置定时器
var d = setTimeout(() => {
wx.showToast({
title: '加载数据中',
icon: 'loading',
mask: true,
//成功返回函数
success: (res) => {
//关闭定时器
clearInterval(d)
//调用封装的网络请求函数
this.lb()
}
})
}, 1000)
}
下拉刷新事件
在js页面中的onPullDownRefresh方法(监听用户下拉动作)内调用封装的函数重新加载第一个页面的数据
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
//loading弹窗
wx.showLoading({
title:"√"
})
//设置定时器两秒后关闭弹窗
setTimeout(function(){
wx.hideLoading()
},2000)
//调用封装的网络请求方法
this.lb()
},