uni-app unicloud-db默认只加载前20条数据未开启分页 插件自行开启分页后 如何解决
uni-app unicloud-db默认只加载前20条数据未开启分页 插件自行开启分页后 如何解决
示例代码:
<unicloud-db collection="lehuo-file-categories" getcount>
<view v-if="error">{{error.message}}</view>
<view v-else-if="loading"></view>
<view v-else>
{{pagination, loading, hasMore, error, options}}
<template v-for="(item,index) in data" :key="index">
{{item.name}}
</template>
</view>
</unicloud-db>
操作步骤:
- 运行到浏览器内
预期结果:
- 没有分页,加载全部数据
实际结果:
- 默认添加分页属性,只加载20条数据
bug描述:
unicloud-db只加载前20条数据,没有开启分页,插件自己打开分页,如何解决?
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win11 | HBuilderX |
HBuilderX | 3.98 |
默认就是20条,不想要分页,就给pagination去掉
<unicloud-db v-slot:default="{data, loading, error, options}" collection="table1" field="field1" :getone="true" where="id=='1'">
<view>
{{ data}}
</view>
</unicloud-db>
在使用 uni-app
的 unicloud-db
组件时,默认情况下,unicloud-db
只会加载前 20 条数据,并且没有开启分页功能。如果你希望开启分页并加载更多数据,可以通过以下步骤来实现:
1. 开启分页功能
在 unicloud-db
组件中,你可以通过设置 page-size
和 page-current
属性来开启分页功能。
<unicloud-db
ref="udb"
collection="your_collection_name"
:page-size="10" <!-- 每页显示的数据条数 -->
:page-current="currentPage" <!-- 当前页码 -->
@load="onLoad"
@error="onError"
>
<!-- 数据渲染部分 -->
<view v-for="item in dataList" :key="item._id">
{{ item.name }}
</view>
</unicloud-db>
2. 处理分页逻辑
在 data
中定义 currentPage
和 dataList
,并在 methods
中处理分页逻辑。
export default {
data() {
return {
currentPage: 1, // 当前页码
dataList: [], // 数据列表
};
},
methods: {
onLoad(data) {
// 数据加载成功后的回调
this.dataList = data;
},
onError(err) {
// 数据加载失败后的回调
console.error(err);
},
loadMore() {
// 加载更多数据
this.currentPage += 1;
this.$refs.udb.loadMore();
},
},
};
3. 加载更多数据
你可以在页面底部添加一个“加载更多”按钮,点击该按钮时调用 loadMore
方法。
<view>
<!-- 数据渲染部分 -->
<view v-for="item in dataList" :key="item._id">
{{ item.name }}
</view>
<!-- 加载更多按钮 -->
<button @click="loadMore">加载更多</button>
</view>
4. 处理分页结束
当没有更多数据可加载时,unicloud-db
会触发 @load
事件,并且返回的数据长度会小于 page-size
。你可以在 onLoad
方法中判断是否还有更多数据。
onLoad(data) {
if (data.length < this.pageSize) {
// 没有更多数据了
this.noMoreData = true;
} else {
this.dataList = this.dataList.concat(data);
}
}
5. 禁用加载更多按钮
当没有更多数据时,可以禁用“加载更多”按钮。
<button @click="loadMore" :disabled="noMoreData">加载更多</button>
6. 初始化加载
在页面加载时,可以手动调用 load
方法来加载第一页数据。
mounted() {
this.$refs.udb.load();
}