Form 表单
基础用法
默认的编辑状态的表单。可以通过配置
props['label-width]
来设置整个form
表单的label
宽度。
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "新文本",
"type": "text"
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"props": {
"label-width": "200px"
}
}
显示配置
带操作按钮的表单
在定义field时也可以通过
rules
配置该字段的校验规则,通过operations
来配置带按钮的表单(包括提交按钮和取消按钮)
{
"type": "form",
"resource": {
"fields": {
"text": {
"type": "text",
"label": "文本",
"rules": [{
"required": true,
"message": "请输入文本",
"trigger": "blur"
}, {
"min": 3,
"max": 5,
"message": "长度在 3 到 5 个字符",
"trigger": "blur"
}],
"props": {
"placeholder": "请输入字符,长度在 3 到 5 个",
"suffix-icon": "el-icon-service"
}
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"operations": {
"submit": {
"type": "button",
"label": "提交",
"props": {
"type": "primary"
}
},
"cancel": {
"type": "button",
"label": "取消"
}
},
"events": {
"submit": "@validate @confirm:确认提交吗? @update"
},
"actions": {
"cancel": function() {
this.$message.success("取消成功")
},
"update": function() {
this.$message.success("提交成功")
}
}
}
显示配置
带默认值的表单
通过
data: {fieldname: 'xxx'}
来配置某个field的默认值,优先级会高于在resource
里定义field时配置的default
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "新文本1",
"type": "text",
"default": "我是resource里定义的默认值"
},
"text2": {
"label": "新文本2",
"type": "text",
"dafault": "我是resource里定义的默认值"
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"data": {
"text2": "我是data里定义的默认值",
"date": 1539792000000
}
}
显示配置
把表单的某几项显示在同一行
通过
layout
来配置某几个field显示在同一行
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "新文本1",
"type": "text",
"default": "我是resource里定义的默认值"
},
"text2": {
"label": "新文本2",
"type": "text",
"dafault": "我是resource里定义的默认值"
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"data": {
"text2": "我是data里定义的默认值",
"date": 1539792000000
},
"layout": {
"text": ["text", "text2"]
}
}
显示配置
行内表单
当垂直方向空间受限且表单较简单时,可以在一行内放置表单。这种是整个表单显示在同一行,直到一行放不下才会换行。
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "新文本1",
"type": "text",
"default": "我是resource里定义的默认值"
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"props": {
"inline": true
}
}
显示配置
展示状态表单
通过
ctx: 'view'
来配置为纯展示的表单,通常用于只读展示。
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "文本",
"type": "text"
},
"date": {
"type": "switch",
"label": "开关"
},
"textarea": {
"type": "textarea",
"label": "内容"
},
"color": {
"type": "color",
"label": "颜色"
},
"rate": {
"type": "rate",
"label": "评分"
},
"radio": {
"type": "radio",
"label": "单选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
},
"checkbox": {
"type": "checkbox",
"label": "多选",
"props": {
"options": {
"a": "黄金糕",
"b": "双皮奶",
"c": "蚵仔煎",
"d": "龙须面",
"e": "北京烤鸭"
}
}
}
}
},
"ctx": "view",
"data": {
"text": "双11活动",
"switch": 1,
"textarea": "双11活动双11活动双11活动双11活动双11活动双11活动双11活动双11活动双11活动",
"color": "#f00",
"rate": 3.7,
"radio": "d",
"checkbox": "b,c"
}
}
显示配置
分组的表单
如果表单太多,还可以插入block来进行分组。配置子block的
slot
为field:${fieldName}
,可以在某行后插入任意block,如想在date
这个field后面插入title block
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "文本",
"type": "text"
},
"date": {
"type": "switch",
"label": "开关"
},
"textarea": {
"type": "textarea",
"label": "内容"
},
"color": {
"type": "color",
"label": "颜色"
},
"rate": {
"type": "rate",
"label": "评分"
}
}
},
"ctx": "edit",
"events": {
"init": "@console",
"submit": "@validate @confirm:确认提交吗? @update"
},
"actions": {
"fieldChange": function(e) {
var t = e.name,
a = e.value;
"testSwitch" === t && (this.block.fields.testPassword.props.disabled = !a)
}
},
"operations": {
"submit": {
"type": "button",
"label": "提交",
"props": {
"type": "primary"
}
},
"cancel": {
"type": "button",
"label": "取消"
}
},
"blocks": {
"formSlotTitle": {
"type": "title",
"options": {
"title": "其它表单"
},
"style": {
"marginLeft": "50px"
},
"slot": "field:textarea"
}
}
}
显示配置
顶部slot block
配置子block的slot为
top
,可以插入在顶部
{
"type": "form",
"resource": {
"fields": {
"text": {
"label": "新文本",
"type": "text"
},
"date": {
"type": "date",
"label": "日期"
},
"password": {
"type": "password",
"label": "密码"
}
}
},
"ctx": "edit",
"blocks": {
"title1": {
"type": "title",
"options": {
"title": "主标题"
},
"slot": "top"
}
}
}
显示配置
在线实验室
参数列表
参数 | 说明 | 可选值 | 类型 | 必填 |
---|
type | block类型 | string | 是 |
data | data可以指定当前block的初始数据,结构和fields保持一致 | null | object | 否 |
config | 全局配置,和通过ams.config配置效果一致 | null | object | 否 |
style | 可以设置区块的外层样式 | null | object | 否 |
events | 可以配置对应事件的处理actions | null | object | 否 |
actions | 可以配置具体的action处理函数 | null | object | 否 |
operations | 可以配置operation操作 | null | object | 否 |
blocks | 可以配置多个子block | null | object | 否 |
render | 默认为false,配置为true则自动在body内渲染,如传入string则渲染在指定的querySelector上 | boolean | string | 否 |
props | 会透传至底层的element-ui组件作为props属性,或者是原生dom元素的属性 | null | object | 否 |
options | block特有配置 | null | object | 否 |
ctx | 编辑态为edit,展示态为view | "edit" | "view" | 否 |
resource | 资源配置,可以通过string使用同名resource,或者直接通过object指定 | string | object | 否 |
fields | 会合并覆盖resource内的fields | null | object | 否 |
layout | 可以重定义field的布局,如合并多个field在同一行,如{ testText: ['testTest', 'testDate']} | null | object | 否 |