弹窗 CRUD:一个实例贯穿新建、编辑、详情
列表页不持有表单。打开弹窗时调用 form.load();新建和编辑继续使用 Element Plus Form,详情切换为只读 Descriptions。
- 01新增任务 → 空标题直接保存,查看宿主报错。
- 02编辑一行并修改任意字段 — dirty 与 changedPaths 随之更新。
- 03保存后在状态面板查看最近写入的记录。
- 04打开详情 → 表单切换为只读 Descriptions。
预期详情模式没有保存按钮,submit 会被拒绝。
本页用真实 Element Plus 控件运行四个现场场景,按一次接入通常遇到的顺序排列。从 01 开始往下走——每个场景持有独立表单实例,可以随意改字段、提交和重置。
列表页不持有表单。打开弹窗时调用 form.load();新建和编辑继续使用 Element Plus Form,详情切换为只读 Descriptions。
预期详情模式没有保存按钮,submit 会被拒绝。
when 控制显隐,rules 条件回调只在字段生效时挂规则;省份变化通过 linkage 清空城市并清除旧校验。
预期只有生效中的字段参与校验,也只有它们进入提交数据。
form.list() 管理动态成员行,fieldPath() 生成宿主 prop;Zod 同时约束数组长度和嵌套字段,并在提交前执行 trim。
预期输出打印的是 schema 解析后的 JSON,不是原始 model。
操作按钮保持可见,必填字段藏在长表单下方。submit 失败时默认自动滚动,由宿主表单完成字段定位。
预期滚动只发生在表单工作区,保存按钮保持原位;状态面板同步显示目标字段与错误。
四套 playground 针对真实 UI 组件库跑同一套契约。启动离你技术栈最近的一套,然后走完下面的评估流程。
评估流程启动任意一套 playground,按顺序走完这五步:
pnpm dev:vue3基础表单、CRUD 弹窗和页面、条件字段、跨字段规则、动态数组、Zod、自定义 adapter。源码 ↗pnpm dev:vue2同一套新建、编辑、详情、重置、提交流程,放进遗留技术栈验证。源码 ↗pnpm dev:naive@vformjs/naive-ui — useNaiveForm、弹窗模式、宿主校验、Zod。源码 ↗pnpm dev:antd@vformjs/ant-design-vue — 局部校验、滚动、弹窗模式、Zod。源码 ↗接入问题和评估结果直接发到仓库: