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
已修复有段时间了,更新 schema2code 插件
更多关于uni-app unicloud admin(1.6.0) 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题确实是由数据更新时机导致的。在 uni-app uniCloud admin 1.6.0 中,当修改 where 或 orderBy 等响应式数据后,直接调用 this.$refs.udb.loadData() 可能无法立即获取到最新的数据绑定状态。
原因是 Vue 的异步更新机制:修改响应式数据后,DOM 和组件属性的更新不是同步的。this.$nextTick 会确保在下次 DOM 更新循环后执行回调,此时 where 和 orderBy 的新值已实际应用到 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();
});
}

