E3.16.1parent check selects children设计

选中父节点通常联动选中全部子节点

别名: 父子联动 · cascade check · 勾父即勾子

概念解释

在树形多选里,勾选父节点的默认含义是「这一支全部加入」:所有可见子节点、以及尚未展开的子孙,都应变成已选。这是向下联动(check-down)。用户勾「华东」是在对一整支授权或导出,而不是只把名叫华东的空文件夹放进集合。取消父节点则整支退出。没有向下联动,父级方框就只是一个普通项,树的层级不再替用户省去逐叶勾选。

「通常」划了一条后路:当父节点自己也是可选对象时,联动规则要能关掉或改写,那是另一条的职责。默认仍是勾父即勾子。

机制

树把集合组织成可折叠的分支。人把分支名当成该集合的把手:抓住把手就是抓住整包。向下联动实现这个把手。展开状态不应改变结果——未展开的子孙也必须被写入,否则「勾上折叠的父级」会留下一份残缺的已选,用户以为整包都在。取消同样向下,避免父级空了子级还在,摘要再次撒谎。

联动是集合运算,不是动画。深树里一次勾父可能改写上千叶,界面要在一次动作里完成语义,再处理渲染。语义先于绘制:即便子节点还没画出来,模型里它们已经是已选。

边界

权限模型里「文件夹」和「文件」是不同对象,勾文件夹不应自动等于勾文件——那时默认联动会过宽,需要可关。过滤后只看见部分子节点时,勾父是勾整支还是只勾可见子集,必须写明;默默只勾可见会在取消过滤后吓人一跳。禁用的子节点不应被联动强行打开,应留下混合并说明跳过了谁。跨页或虚拟滚动的树,未挂载的节点仍要在模型里被联动,不能因为没渲染就没选上。

怎么落地

  • 默认:勾父写入整支子孙,取消父清除整支;折叠不改变这层语义。
  • 在父级旁用文案或计数预告将影响多少子项。
  • 过滤与禁用情况下把范围说清,不要静默缩小。
  • 验证:折叠一棵含未展开子孙的树,勾父,再展开并导出已选 ID。缺了未展开的叶,向下联动就只作用在画出来的那些行上。

延伸

  • 同组E3.16.2 部分子节点被选中时父节点需显示中间态 · E3.16.3 联动规则在深层树中仍需保持性能与响应速度 · E3.16.4 用户需能只选中父节点本身而不含任何子项
  • 相邻E3.12 三态与不确定态 · E4.06 树形控件
  • 站内检索check-down · select all children · tree cascade select

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E3.16.1