Archived
fix(interaction): data-options 收尾防重改认显式标记,不再靠「有没有 selected 这个词」
评审复现了一个真泄漏:selectCurrent 用 /\bselected\b/.test(block) 当「行内那一遍 处理过没有」的代理 —— 而一行被正确处理过、且合法地落在「没有选中项」上(值不在 选项里,或这一格还没填),跟「压根没被处理过」在字面上是同一个样子。renderView 收尾那一遍拿外层作用域重新处理这块,若外层恰好有个同名裸键命中某个选项,就会把 它错误地渗进这一行 —— 界面撒谎:显示一个这一行数据里根本不存在的选中态。 改记一个跟内容无关的标记属性 data-sel-scoped:处理完(不管有没有真标出 selected) 都打上,下一遍见到标记就跳过;renderView 收尾前把它整个剥掉,不留进交给沙箱的成品。 顺带治了评审点的 Minor #1:旧写法还会被 <option> 显示文字里恰好出现的 "selected" 误判(枚举标签写成 "Selected Value" 那种)。 三条新用例:行内下拉值不在选项里 / 新加的空行,均验证不再被外层同名值渗透 (RED 证实了泄漏确实发生过);行外独立下拉仍正确标好 selected(防重归防重, 不能把本该工作的那条也防没了)。 docs/HTML报告生成规范.md 补一句:data-options 与 data-slot 不能共存,后者会被 fillOptions 摘掉不起作用(评审 Minor #2)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
@@ -117,6 +117,12 @@
|
||||
| `data-value` | `<input>` | 值进 value 属性(孪生件用,模版一般不手写) |
|
||||
| `data-file-of="主键列"` | 行内任意元素 | 这一格**点开是一份资料文件**:渲成 `data-file="域.对象/主键值"`,外层接住就跳到查看面。那一列空着就整个属性去掉 —— 没有文件的行不该长得像能点开 |
|
||||
|
||||
**`data-options` 与 `data-slot` 不能共存**(2026-08-29):同一个 `<select>` 上若还写了
|
||||
`data-slot`,渲染时会被 `fillOptions` 一并摘掉、不起作用 —— `data-slot` 换的是**文本**,
|
||||
而 `<select>` 的内容是一串 `<option>`,留着它会被后面的槽位填值当成普通文本槽,把刚铺好的
|
||||
选项整段冲成一行数字/文字。**下拉的「当下值」由 `data-col` 决定**(`selectCurrent` 认它),
|
||||
不必也不该再写 `data-slot`。
|
||||
|
||||
**资料文件**(2026-08-23):一行台账还可以是一份**真文件**。台账声明里写
|
||||
`file: { titleColumn, bodyColumn, formatColumn }`(它同时是授权面 —— 不声明就点不开),
|
||||
正文一律 Markdown 原文写在 `bodyColumn`,格式列写 `md` / `html` / `docx` / `xlsx`;
|
||||
|
||||
Reference in New Issue
Block a user