任务面板首次打开时截止控件没升级成 AntD (#75)
用户:「空间有了,但是不是我想要的空间,这个空间需要换。」 经确认「空间」=「控件」,现象是五个原生下拉(年/月/日/时/分), 期望 AntD 弹层日历。 真根因:首次打开面板走 entry_popup.js 的 loadPanel(), 它只 innerHTML + runInlineScripts,**没有补挂 AntD**。 上一条 #74 我在 task_panel.js 的 paint() 里加了 fbBootAntd(), 但 paint() 只在"面板里做了动作之后重画"时才跑 (点状态/挪看板/加子任务/发评论/传附件 → act() → 回来 paint())。 **首次打开不经过 paint()** ⇒ 用户第一眼看到的是从未升级过的原生下拉。 (先点一下「已完成」再点回来就会看到 AntD 挂上了 —— 这种"时好时坏"最迷惑。) 为什么 bootAntd 首屏也没兜住: if (!hosts.length && !dateRanges.length && !dates.length && !singles.length) return; 首页首屏任务卡里没有 [data-dt-antd-single](那控件要打开面板才有) ⇒ 首屏调用时直接 return。 修法: ① entry_popup.js loadPanel():插入 HTML 后调 fbBootAntd() ② 顺带修第二个 bug:bindDue() 原来也只在 paint() 里调, 首次打开不绑定 ⇒ 选完截止时间 change 没人听 ⇒ **不会保存**。 ⇒ 把 bindDue 暴露成 window.fbTaskPanelBindDue,loadPanel 显式调一次。 加载顺序已确认:两者都是 defer,entry_popup.js(253) 在前、 task_panel.js(268) 在后 ⇒ task_panel 先执行完并注册好 window.fbTaskPanelBindDue,之后 loadPanel 才在用户点击时调用。 不存在"调的时候还没定义"。 antd 样式确认:vendor 目录只有 reset.css(antd 5 是 CSS-in-JS 运行时注入), 不存在"缺样式导致看起来像原生下拉"的可能。
This commit is contained in:
@@ -405,4 +405,16 @@
|
||||
}
|
||||
step();
|
||||
}
|
||||
|
||||
/**
|
||||
* 对外暴露「给截止控件绑 change 监听」(#74)。
|
||||
*
|
||||
* 为什么需要:首次打开面板走的是 `entry_popup.js` 的 `loadPanel()`,
|
||||
* 那条路只 innerHTML、不经过本文件的 `paint()` ⇒ `bindDue()` 不会自动跑
|
||||
* ⇒ 用户选完截止时间不会保存(只有做过一次别的动作、触发过一次重画才会生效)。
|
||||
* `loadPanel()` 在插入 HTML 后显式调这个。
|
||||
*
|
||||
* ⚠️ 内部有 `data-fb-due-bound` 幂等标记,重复调用不会重复绑。
|
||||
*/
|
||||
window.fbTaskPanelBindDue = bindDue;
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user