基于 json-schema 生成表单是足够的,但是不是非常充分;尤其是在展现方面:
[ ] 1. Object 的 properties 的排序干预
[ ] 2. 特殊展现的控件,比如密码类型文本输入框
[ ] 3. 以及其他
因此,需要引入一个额外的配置文件 uiSchema;
基于格式:
{
"$order": ["username", "password"],
"password": {
"$control": "password"
},
"username": {
"$disabled": true
},
"address": {
"$readOnly": true
},
"hiddenField": {
"$hidden": true
}
}
其中,以 schema 的 value 值为主体;以 @ 开头的字段是给 uiSchema 使用的,非以 @ 开头的字段是 json-pointer 的一部分;
具体的:
$order 只在 object 类型字段上生效,用以描述 object 属性展现的顺序
$control 指定输入控件的渲染组件
$disabled 整个字段的进入 禁用 状态
$readOnly 整个字段进入 只读 状态
$hidden 整个字段进入 隐藏 状态
基于
json-schema生成表单是足够的,但是不是非常充分;尤其是在展现方面:[ ] 1.
Object的properties的排序干预[ ] 2. 特殊展现的控件,比如密码类型文本输入框
[ ] 3. 以及其他
因此,需要引入一个额外的配置文件
uiSchema;基于格式:
{ "$order": ["username", "password"], "password": { "$control": "password" }, "username": { "$disabled": true }, "address": { "$readOnly": true }, "hiddenField": { "$hidden": true } }其中,以 schema 的 value 值为主体;以
@开头的字段是给 uiSchema 使用的,非以@开头的字段是json-pointer的一部分;具体的:
$order只在object类型字段上生效,用以描述object属性展现的顺序$control指定输入控件的渲染组件$disabled整个字段的进入禁用状态$readOnly整个字段进入只读状态$hidden整个字段进入隐藏状态