From 6f721ffc6d9fdc3fe046cd83dc606202816db981 Mon Sep 17 00:00:00 2001 From: xcs Date: Sat, 29 Aug 2026 06:21:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(interaction):=20data-options=20=E6=94=B6?= =?UTF-8?q?=E5=B0=BE=E9=98=B2=E9=87=8D=E6=94=B9=E8=AE=A4=E6=98=BE=E5=BC=8F?= =?UTF-8?q?=E6=A0=87=E8=AE=B0,=E4=B8=8D=E5=86=8D=E9=9D=A0=E3=80=8C?= =?UTF-8?q?=E6=9C=89=E6=B2=A1=E6=9C=89=20selected=20=E8=BF=99=E4=B8=AA?= =?UTF-8?q?=E8=AF=8D=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 评审复现了一个真泄漏:selectCurrent 用 /\bselected\b/.test(block) 当「行内那一遍 处理过没有」的代理 —— 而一行被正确处理过、且合法地落在「没有选中项」上(值不在 选项里,或这一格还没填),跟「压根没被处理过」在字面上是同一个样子。renderView 收尾那一遍拿外层作用域重新处理这块,若外层恰好有个同名裸键命中某个选项,就会把 它错误地渗进这一行 —— 界面撒谎:显示一个这一行数据里根本不存在的选中态。 改记一个跟内容无关的标记属性 data-sel-scoped:处理完(不管有没有真标出 selected) 都打上,下一遍见到标记就跳过;renderView 收尾前把它整个剥掉,不留进交给沙箱的成品。 顺带治了评审点的 Minor #1:旧写法还会被