uni-app unicloud-db中loadtime改为手动后无法更改页面的page-size
uni-app unicloud-db中loadtime改为手动后无法更改页面的page-size
示例代码:
<unicloud-db ref="udb" getcount :page-size="pageSize" :page-current='pageCurrent' page-data="replace" loadtime = "manual" ....
操作步骤:
:page-size="pageSize" loadtime = "manual"
更改pageSize,数据没有刷新
预期结果:
手动模式下数据依然刷新
实际结果:
手动模式下数据没有刷新
bug描述:
unicloud-db中两个问题:
- loadtime改为手动后 修改page-size没法重新渲染新的数据依旧是原来的数据条数,照文档中解释page-size修改应该不联网拿数据,是本地的重新渲染
- auto会变,mannual不变 https://github.com/dcloudio/uni-app/blob/master/packages/uni-cli-shared/components/unicloud-db.vue
| 信息类型 | 内容 |
|--------------|----------------------------------------------------------|
| 产品分类 | uniCloud/App |
更多关于uni-app unicloud-db中loadtime改为手动后无法更改页面的page-size的实战教程也可以访问 https://www.itying.com/category-93-b0.html
修改page-size是需要重新获取数据,比如你从10修改成20,肯定是需要重新拿数据的。文档说的应该是不重置数据
更多关于uni-app unicloud-db中loadtime改为手动后无法更改页面的page-size的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是。重新请求数据从10修改成20,依然是拿到10条在manual模式下,在auto模式下就正常
··· this.$watch(() => { var al = [] attrs.forEach(key => { al.push(this[key]) }) return al }, (newValue, oldValue) => { if (this.loadtime === loadMode.manual) { return } ··· 这个是官方源代码 manual模式下所有attrs都不watch了,当然变不了
回复 吴克: manual模式下确实不会监听这些属性,你试一下修改之后nextTick回调里再发送loadData
在 loadtime="manual" 模式下,修改 page-size 确实不会自动触发数据重新渲染。这是因为手动模式下,组件不会自动响应数据绑定的变化来重新查询数据。
解决方案:
-
手动调用刷新方法: 修改
pageSize后,需要显式调用this.$refs.udb.loadData()来重新加载数据。// 修改pageSize后 this.pageSize = newSize; this.$nextTick(() => { this.$refs.udb.loadData(); }); -
使用
v-if强制重建组件(不推荐): 通过v-if控制组件销毁重建,但性能较差。<unicloud-db v-if="refreshFlag" ... />this.pageSize = newSize; this.refreshFlag = false; this.$nextTick(() => { this.refreshFlag = true; });

