发现于 objectstack-ai/hotcrm#771 / PR objectstack-ai/hotcrm#784(Sales Home 标签页内嵌视图的实测过程)。与已关闭的 #4413 同缺陷类——「契约 publish 了渲染器根本不读的绑定」——但 #4413 处理的是 record:* 四个 block 的 objectName/recordId,不含本键,故单独立此单。
现象(单变量对照,pinned 17.0.0-rc.2,真实 dev server + Chromium)
同一张 type: 'home' 页面上三个 list-view 页面组件:
- 不带
dataSource 的两个 → 正常渲染真实数据表格;
- 按 spec 写
dataSource: { object, view } 的那个 → 运行时直接失败 "Couldn't load records"。
两个方向各复现一次(加上即坏、去掉即好)。
机理
PageComponentSchema.dataSource.view(ElementDataSourceSchema 的 view 键)在 spec 里声明;
- objectui 的
resolveElementDataSource 把 view 键整个丢弃;
- 且该函数除测试外零调用方——即「按名字引用 saved view」这条声明的能力在 rc.2 运行时不存在,写了还会把组件弄坏。
应用侧的实际代价
hotcrm PR objectstack-ai/hotcrm#784 因此无法按名字引用 saved view,只能从 src/views/*.view.ts 读出 columns / filter / sort 内联进 page 组件(PR body 已记录此取舍与理由)。每个这样做的应用都在为同一个视图维护两份配置的漂移风险——这正是 saved-view 引用本该消灭的问题。
验收建议(同 #4413 的结论口径:当前状态不能留)
二选一:
- objectui 消费
view 键——按名字解析 saved view 的 columns/filter/sort 并渲染;或
- 从 spec / 公开契约撤下该键,并让 validate 拒绝它——不再让一个「声明+校验但不执行、用了反而坏」的绑定继续误导作者。
/cc 需要 objectui 侧改动(objectstack-ai/objectui:resolveElementDataSource)。
发现于 objectstack-ai/hotcrm#771 / PR objectstack-ai/hotcrm#784(Sales Home 标签页内嵌视图的实测过程)。与已关闭的 #4413 同缺陷类——「契约 publish 了渲染器根本不读的绑定」——但 #4413 处理的是
record:*四个 block 的objectName/recordId,不含本键,故单独立此单。现象(单变量对照,pinned 17.0.0-rc.2,真实 dev server + Chromium)
同一张
type: 'home'页面上三个list-view页面组件:dataSource的两个 → 正常渲染真实数据表格;dataSource: { object, view }的那个 → 运行时直接失败 "Couldn't load records"。两个方向各复现一次(加上即坏、去掉即好)。
机理
PageComponentSchema.dataSource.view(ElementDataSourceSchema的view键)在 spec 里声明;resolveElementDataSource把view键整个丢弃;应用侧的实际代价
hotcrm PR objectstack-ai/hotcrm#784 因此无法按名字引用 saved view,只能从
src/views/*.view.ts读出 columns / filter / sort 内联进 page 组件(PR body 已记录此取舍与理由)。每个这样做的应用都在为同一个视图维护两份配置的漂移风险——这正是 saved-view 引用本该消灭的问题。验收建议(同 #4413 的结论口径:当前状态不能留)
二选一:
view键——按名字解析 saved view 的 columns/filter/sort 并渲染;或/cc 需要 objectui 侧改动(objectstack-ai/objectui:
resolveElementDataSource)。