E4.11.2panel-main state synchronisation设计研究

面板与主内容的状态同步需明确

别名: 检查器同步 · 双向绑定面板 · 面板过期 · inspector sync

概念解释

非模态让两边同时可改,也就让两边同时可能过期。面板与主内容的同步(panel–main synchronisation)要求:主表面上改了选中对象或它的值,面板立刻显示同一份;面板里改了属性,主表面立刻画成同一份。不同步时,人会按过期的检查器做决策,或按过期的画布理解面板。并行若不同步,还不如关着。

机制

两块可见区域被默认当成同一份世界的两个视角。视角之间一旦延迟或方向单向,世界就裂开:画布上对象已经移到右侧,检查器还写着旧坐标;检查器改了名称,列表里仍是旧名。裂开之后,下一次编辑会写到错误的对象上,或把刚改的值用旧视图覆盖回去。同步必须是双向、按对象身份而不是按面板打开时的快照。选中切换时,面板应整份换成新对象,而不是把上一个对象的脏字段留在表单里。正在输入的字段需要明确的提交点,否则主表面的一次外部更新会把半截输入冲掉——那是同步策略的一部分,不是同步的反面。

怎么研究

在打开的检查器上改一个属性,看主表面出现新值的延迟;在主表面改选中,看检查器是否换对象、是否残留上一条的值。自变量:更新是即时还是失焦提交、是否跨对象残留。因变量:过期读取次数、用旧值覆盖新值的次数、选错对象编辑。用录屏对同一时刻的两边截图,比问「感觉同步吗」更硬。

边界

协作场景下服务器才是真源,两边都可能滞后,同步要标明「正在保存 / 他人已改」而不能假装本地即真理。只读面板可以单向从主表面拉,不必把只读区的点击写回。大文档的昂贵预览可以节流,但节流期间要显示「预览落后于编辑」,否则节流就是沉默的不同步。面板关闭期间不必同步;再打开时应拉当前对象,而不是恢复关闭前的快照。

怎么落地

  • 以对象 id 为键:选中变化则面板整表替换;禁止上一条的字段值留在输入框里。
  • 主表面改值与面板改值走同一数据源,任一侧提交后另一侧重绘。
  • 正在键入的字段用失焦或确认提交,并在外部更新到来时不覆盖未提交的输入,或明确提示将丢失。
  • 验证:改面板看主表面,改主表面看面板,再快速换选中。有一处数字对不上,就修同步而不是加「刷新」按钮。

延伸

  • 同组E4.11.1 非模态允许与主内容并行操作 · E4.11.3 面板占用宽度会挤压主内容
  • 相邻E4.08 分栏与主从视图 · E4.05 行内与批量操作
  • 站内检索inspector sync · two-way binding · stale panel

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E4.11.2