# Schema Form 方案表单 通过配置JSON Schema的方式快速生成一个表单 ## 基础用法 `schema`设置配置项,其中**props**参数与`eagle-form`组件参数相同,**items**则对应`eagle-form-item`组件,默认参数为``组件与`eagle-form-item`组件参数的并集。 ::: snippet 基础示例 ```html ``` ::: ## 表单校验 配置下的`props`对应`eagle-form`的参数,可以在此统一配置`rules`;配置下的`items`的每一项都对应`eagle-form-item`,也可以直接配置`rules`设置该项的校验规则。
::: snippet 设置**props**下的校验规则示例 ```html ``` ::: ::: snippet 设置**items**下的校验规则示例 ```html ``` :::
## 表单提交 表单会默认提供一个`footer插槽`,并提供表单的提交、取消、重置等方法,且相关方法都有对应的事件监听。也可以不使用插槽提供的方法直接自定义。 ::: snippet 配置`footer`插槽提供触发方法的示例 ```html ``` ::: ::: snippet 自定义提交的示例 ```html ``` ::: ## 显示状态 支持配置`if`、`show`对表单项进行`v-if`、`v-show`逻辑的设置。 ::: snippet 隐藏表单项的示例 ```html ``` ::: ## 动态规则 某些情况下,表单中的某一项根据另一项的值来做当前项`显示状态`、`校验规则`、`标签名称`的动态判断。支持将任意表单配置项的任意参数改写为`function`类型,参数提供`value`、`model`、`onInput`等。 ::: snippet 动态规则仅在配置项中有效,配置项子节点中无效 ```html ``` ::: ## 配置复用 因为与`eagle-form`、`eagle-form-item`用法相同,所以除了可以用作表单以外,也可用作详情展示,同时因为本身是schema配置项,所以可以做到表单和详情**配置复用**。 ::: snippet 配置复用示例 ```html ``` ::: ## 自定义插槽 在某些特殊情况下,表单项可能是当前页面的临时组件,或者项目并没有全局引入组件,亦或者需要一些特殊的函数去处理,此时可以使用自定义插槽替换默认配置项。插槽默认提供了`value`和`onInput`用于维护当前值。 ::: snippet schema配置中items配置项的`is`设置为`slot`,即可在组件下通过插槽的方式替换配置项。默认支持`具名插槽`、`label`插槽、`error`插槽,与`el-form-item`的插槽类似。 ```html ``` ::: ## 配置子节点 使用表单时,除了可能会出现单组件子节点以外,可能出现带有子节点的子组件。schema也支持对子节点进行配置。 ::: snippet schema配置中items配置项的`children`可以配置子节点,格式同``组件。 ```html ``` ::: ## 复杂表单 一般情况下,复杂表单建议使用`eagle-form`、`eagle-form-item`等组件构建视图,`不建议`使用schema的方式配置。但是利用schema配置项的一些特性,也可以做到部分复杂表单使用schema配置完成。 ::: snippet 包含了**插槽**、**子节点**、**自定义子节点**的复杂示例 ```html ``` ::: ## API ## Attribute 属性 参数|说明|类型|可选值|默认值 -|-|-|-|- value | 值 | Object | - | {} schema | JSON Schema配置项列表 | Object | - | {} ## Events 事件 事件名称|说明|回调参数 -|-|- input | 表单值变化 | model