Form
Form 是 crud 业务核心组件, 默认自动生成 placeholder . 半自动生成 基础 表单验证, 让细节滴水不漏.
基础使用
使用 form 构建表单元素. 使用 row 进行栅栏布局 默认占 24 栏. 默认情况下会自动为其生成 placeholder 也可手动指定。通过 model 对 data 内数据进行双向绑定
data: { "label1": "", "label2": "123", "label3": "" }
组合值绑定
model支持绑定数组形式的组合值
嵌套值绑定
model支持值的嵌套绑定
表单禁用
disabled 控制禁用整个表单, vDisabled 权重更高
vIf
vIf 控制当前元素是否渲染、与 vue 内 v-if 指令类似
vDisabled
vDisabled 控制当前元素是否禁用
渲染自定义组件
使用 render 渲染自定义组件/元素.
组件栅格化 row
通过 row 配置内部组件栅格 row也可配置在独立的组件下
媒体查询 - 组件栅格化
通过 wrapperCol 配置内部组件栅格 wrapperCol也可配置在独立的组件下
渲染自定义表单组件
使用 renderFormItem 渲染自定义组件/元素 内部会生成 ElFormItem 容器来处理表单验证
表单验证
使用 createRule 构建表单验证, 可使用 required 快速构建基础必选类型(内部能自动选取合适的 trigger、错误提示语). create 支持链调用来组织表单验证. 也支持直接配置 async-validator
表单验证通过会立即回调 onSuccess 反之 onError
分组
通过设置 children 可对表单元素进行分组
动态渲染 - vFor
动态渲染表单元素, 也可使用 map 实现, vFor 内部是由 map 实现, 为了推导其类型在 map 加了一层 vFor
data: { "array": [ { "ip": "" } ] }
配置接口 - api
当配置 api 后表单在表单验证通过后直接调用接口, 此刻 onSuccess 未触发 当接口调用成功才会触发 onSuccess . 在接口调用前可使用 requestData 重新构造提交数据
Form Option
| 属性 | 说明 | 类型 | 可选择 | 默认值 |
|---|---|---|---|---|
| form | 构建表单 | Function | array | - | - |
| disabled | 禁用 | Ref<boolean> | boolean | true、false | false |
| labelWidth | 表单 labelWidth | number | number | 120 |
| api | 表单提交接口配置 | 指定 key | - | - |
| customProps | ElForm 属性入口 | object | - | - |
| loading | 表单 loading | Ref<boolean> | - | false |
| requestData | 提交时 payload | requestData?: (data: RefValue<T>, api: ApiType) => any | - | - |
| onChange | 表单任一元素值改变 | - | - | - |
| onSuccess | 表单验证通过、提交成功 | (done: () => void, data: RefValue<T>, requestData?: any) => void | - | - |
| onError | 表单验证失败、提交失败 | (done: () => void) => void | - | - |
| createRule | 构建表单验证 | - | - | - |
Form.form Option
| 属性 | 说明 | 类型 | 可选择 | 默认值 |
|---|---|---|---|---|
| type | 组件类型 | - | - | - |
| label | 表单 label | - | - | - |
| model | 绑定值 | - | - | - |
| row | 栅栏布局 | [number, number] | - | [24, 0] |
| align | render 的对齐方式 | 'left' | 'center' | 'left' | - | 'left' |
| vIf | - | - | - | - |
| vDisabled | - | - | - | - |
| render | - | - | - | - |
| renderFormItem | - | - | - | - |
| labelWidth | - | - | - | - |
| placeholder | - | - | - | - |
| className | - | - | - | - |
| onChange | - | - | - | - |
| dataSource | - | - | - | - |
| customProps | - | - | - | - |
| defaultValue | - | - | - | - |
| createRule | - | - | - | - |