Form Definition

如果没有提供 Form Definition ,我们将根据schema渲染默认表单类型。

Form Definition是一个数组,它的子集可以是以下内容:

  • "*" 完全使用schema生成的默认表单,相当于没设置
  • "name" schema property name
  • {key: "name"} 一个Form Field定义对象

Form Definition可以嵌套。

实际上内部会将schema转换成Form Definition,然后如果设置了Form Definition,两者进行合并,Form Definition优先。

它可以做什么

  • 改变表单类型
  • 定义表单顺序
  • 增删描述
  • 布局
  • 表单属性
  • 一些扩展表单元素的配置
  • ...

keywords

Form Definition支持的关键字

{
  "type": "text",             // 表单元素类型
  /* 下面都是可选 */
  "key": "name.firstName",    // data path
  "title": "姓",              // title,默认取schema title;为空可以去掉title
  "description": "",          // 表单元素下面的默认提示文案,默认取schema description
  "placeholder": "",          // placeholder
  "readonly": false,          // 只读
  "disabled": false,          // disabled
  /* 特定类型的属性 */
  "items": [],                // 容器的子表单元素;definition子集
  "mutiple": false,           // 是否多选
  "step": 1,                  // type=number,数字间隔
  "row": 3,                   // type=textarea,row
  "col": 3,                   // type=inline,栅格化col
  "options": [                // select、checkboxs、radios等多选元素的options; key是展示出来的,value代表值
    {
      "label": "",
      "value": ""
    }
  ],
  "tpl": "",                  // type=html,模板
  "config": {}                // type=select、date、editor、image-upload等扩展组件支持的配置
}

key

data属性路径,跟实际对象属性的访问路径相同。

数组元素访问list[].id:因为数组的index根据实际情况生成,所以这里通过数组下标[]占位表示。如

// data 对应的key
{
  "name": {               // key: "name"
    "firstName": "昌彬",  // key: "name.firstName"
    "lastName": "王"      // key: "name.lastName"
  },
  "age": 25,              // key: "age"
  "classes": [            // key: "classes"
    {
      "name": "语文",      // key: "classes[].name"
      "score": 80          // key: "classes[].score"
    }
  ]
}

results matching ""

    No results matching ""