问题的由来
在移动端开发的场景中,对于分页往往是不关心共有几页当前是第几页,有的是无限上拉加载,于是乎Query.count()不再是刚需,只有知道有没有后一页就可以。
目前的做法
// 计算总页数
getAllCourseCount: function () {
var query = new AV.Query('Course');
query.count().then(function (count) {
const pageCount = Math.ceil(count / api.pageSize);
that.page.pageCount = pageCount;
});
}
// 监听到达底部作无限加载
onReachBottom: function () {
if (that.page.pageNo >= that.page.pageCount) {
wx.showToast({
title: '没有更多内容了',
icon: 'success'
});
return;
}
that.loadNewCourse(that.page.pageNo * api.pageSize);
wx.showToast({
title: '正在加载',
icon: 'loading',
duration: 2000
})
}
// 请求最新课程
loadNewCourse: function (offset) {
that.page.pageNo ++;
api.loadNewCourse(offset, function (newCourse) {
// 隐藏toast提示框
wx.hideToast();
// 保存数据
that.setData({
newCourse: that.data.newCourse.concat(newCourse)
});
});
},
// api.js获取最新上线课程
function loadNewCourse(offset, callback) {
var query = new AV.Query('Course');
query.equalTo('isShow', true);
query.skip(offset);
query.descending('createdAt');
// 排序按照创建日期
query.find().then(function (courseObjects) {
callback(courseObjects);
});
}
期望的方案
如果能在query.find().then(function(result){})中,result包裹一层{hasNext:true/false,data:[]}就能够免去调用count之后再去计算有没有后一页。
如以下代码,凭if (newCourse.hasNext)判断是否已经没有更多内容
// 请求最新课程
loadNewCourse: function (offset) {
that.page.pageNo ++;
api.loadNewCourse(offset, function (newCourse) {
// 隐藏toast提示框
wx.hideToast();
if (newCourse.hasNext) {
// 保存数据
that.setData({
newCourse: that.data.newCourse.concat(newCourse)
});
} else {
wx.showToast({
title: '没有更多内容了'
});
}
});
},
谢谢
ps:发帖总说我Title 无效;试试写的更明确一些吧
-
创建时间
17年3月7日
-
最后回复
17年3月7日
-
6
回复
-
1.3K
浏览
-
3
用户
-
1
赞