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中两个问题:


| 信息类型     | 内容                                                     |
|--------------|----------------------------------------------------------|
| 产品分类     | uniCloud/App                                             |

更多关于uni-app unicloud-db中loadtime改为手动后无法更改页面的page-size的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

修改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 确实不会自动触发数据重新渲染。这是因为手动模式下,组件不会自动响应数据绑定的变化来重新查询数据。

解决方案:

  1. 手动调用刷新方法: 修改 pageSize 后,需要显式调用 this.$refs.udb.loadData() 来重新加载数据。

    // 修改pageSize后
    this.pageSize = newSize;
    this.$nextTick(() => {
      this.$refs.udb.loadData();
    });
    
  2. 使用 v-if 强制重建组件(不推荐): 通过 v-if 控制组件销毁重建,但性能较差。

    <unicloud-db v-if="refreshFlag" ... />
    
    this.pageSize = newSize;
    this.refreshFlag = false;
    this.$nextTick(() => {
      this.refreshFlag = true;
    });
回到顶部