uni-app unicloud admin(1.6.0) 报Bug

uni-app unicloud admin(1.6.0) 报Bug

操作步骤:

1、list中使用search功能
2、再搜索一个可搜索成功的词后

预期结果:

正确显示搜索结果列表

实际结果:

显示的是上次搜索结果列表

bug描述:

如果使用了:where=“where”, :orderby="orderBy"等如果修改了where,orderBy等值,使用结果显示,当采用this.$refs.udb.loadData()前都需要使用this.$nextTick才能正常工作,但schema2code生成的列表中,search方法中是没有使用nextTick的,导致search功能异常,结果现实的都是上一次搜索的结果


更多关于uni-app unicloud admin(1.6.0) 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已修复有段时间了,更新 schema2code 插件

更多关于uni-app unicloud admin(1.6.0) 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个问题确实是由数据更新时机导致的。在 uni-app uniCloud admin 1.6.0 中,当修改 whereorderBy 等响应式数据后,直接调用 this.$refs.udb.loadData() 可能无法立即获取到最新的数据绑定状态。

原因是 Vue 的异步更新机制:修改响应式数据后,DOM 和组件属性的更新不是同步的。this.$nextTick 会确保在下次 DOM 更新循环后执行回调,此时 whereorderBy 的新值已实际应用到 udb 组件上。

schema2code 生成的列表组件中的 search 方法未包含 this.$nextTick,因此会出现搜索条件已更新但查询仍使用旧值的情况,导致显示上一次的搜索结果。

解决方案:在 search 方法中修改 where 条件后,使用 this.$nextTick 包裹 this.$refs.udb.loadData() 调用。

示例修改:

search() {
  // 更新 where 条件
  this.where = this.searchForm;
  this.$nextTick(() => {
    this.$refs.udb.loadData();
  });
}
回到顶部