YbRowsForm 多行表单
可增加、移除、上移、下移操作的多行展示的表单,通常作为yb-form
或者el-form
的一种表单控件
formItems[].rules[].validator 支持第六个参数:
rowsFormItems = [
{
label: '活动区域',
prop: 'region',
tooltip: '活动区域必填',
rules: [
{
validator: (
rule,
value,
callback,
source,
options,
{ prop, rowKey, parentProp, row }
) => {
callback();
},
},
],
defaultValue: '99',
},
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 基本使用
在yb-form
中使用
复制
# 控件非联动显示/隐藏
与行内控件联动显示-隐藏不同的是,该功能用于控制所有行的字段
- renderedController:根据每个字段设置是否渲染,默认渲染
字段设置为 false:相当于渲染节点时 return null,若设置 rules ,不进行校验
- showedController: 根据每个字段设置是否显示,默认显示
字段设置为 false:相当于节点添加样式 display: none,若设置 rules ,进行校验
复制
# 行内控件联动显示/隐藏
复制
# Props
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
renderedController | 控制不渲染字段,字段值不可被绑定,优先级比 rowFormItemRendered 高 。示例:{ desc: true },则 desc 字段不渲染 | object | - | {} |
showedController | 控制隐藏字段,字段值可以被绑定,相当于 display:none,优先级比 formItems[].show 高 。示例:{ desc: true },则 desc 字段不显示 | object | - | {} |
formItems | 生成多个el-form-Item (opens new window)的数据,每一项的属性对应el-form-Item (opens new window)的属性,每个控件通过对应的 item.prop 的作用域插槽来添加。 | object[] | - | [] |
formItems[].excludeSpans | 是否不包含在 spans | boolean | - | false |
是否不渲染(不建议再使用,可以用 renderedController 代替) | boolean | - | false | |
formItems[].tooltip | 配置提示信息 | string | function({formItem,formModel,rowKey,rowIndex},h) => string | - | -- |
formItems[].contentTip | 在控件下面配置提示信息 | string | function({formItem,formModel,rowKey,rowIndex},h) => string | - | -- |
spans | 用栅栏布局对 formItems 排版,如果是 object 类型,将与默认的{ xl: 4,lg: 6,md: 8,sm: 12, xs: 24}进行合并,总占格数为 24 | boolean | object | - | false |
rowFormItemRendered | 控制行内的 formItem 是否渲染的函数,优先级比 formItems[].unrendered 高 | function({rowKey,row,formItem}){return Boolean} | - | -- |
label-width | 表单域标签的宽度。支持 auto ,默认继承 yb-form 的 label-width | - | - | - |
label-position | 表单域标签的位,默认继承 yb-form 的 label-position | - | right/left/top | - |
showAddButton | 是否显示新增按钮 | - | boolean |function({rows}){return boolean} | true |
showInsertButton | 是否显示下插入一行按钮, 默认 null 会取showAddButton, 优先级比showAddButton高 | - | boolean|function({ row, rowKey,idScope,rowIndex}){ return true }|null | null |
showRemoveButton | 是否显示移除按钮 | - | boolean|function({ row, rowKey,idScope,rowIndex}){ return true } | true |
showMoveButton | 是否显示上移、下移按钮 | - | boolean|function({ row, rowKey,idScope,rowIndex}){ return true } | true |
showRowKey | 是否显示操作按钮前的行标识,当 showRowKey、showRemoveButton、showMoveButton 都不显示时,操作区域也就不会显示 | - | boolean | true |
idScope | 内部渲染将 rowKey 当作行的 dom 元素 id,如果一个页面存在多个 YbRowsForm,行 DOM 的 id 就不唯一,为了保证唯一 id,所以给 YbRowsForm 设置不同的 idScope,行 DOM 的 id 格式:idScope-rowKey | - | string | -- |
removeRowFieldWhenDestroy | 是否在行内控件销毁时清空对应的字段值 | - | boolean | true |
shardedRendering | 是否分片渲染,表单项太多,一次性渲染会很明显的卡顿,开启后会进行异步一个表单项接着一个表单项的渲染 | boolean | - | false |
moveViewLabelKey | 上移下移弹窗的下拉列表的选项显示名称来源,对应 formItems[].prop | string | - | - |
# Events
参数 | 说明 | 回调参数 |
---|---|---|
change | 绑定值改变时触发,比如添加行、移除行、上移行 | value |
rowFieldChange | 行内字段值改变触发 | {row,rowKey,fieldProp,idScope} |
rowFieldBlur | 行内字段失去焦点触发 | {row,rowKey,fieldProp,idScope} |
shardedRenderEnd | 开启 shardedRendering 分片渲染后,最后渲染完成会触发的事件 | - |
上次更新: 2024/11/26, 19:21:17