Select 选择器
在线实验室
参数列表
参数 | 说明 | 可选值 | 类型 | 必填 |
---|
type | field类型 | string | 是 |
label | 标签文本 | string | 否 |
ctx | 编辑态为edit,展示态为view,不配置则使用当前block的ctx | "edit" | "view" | 否 |
default | 可以设置默认值 | string | 否 |
labelWidth | 在form和object内生效,可单独指定当前field的标签文本所占的宽度 | string | 否 |
info | 如配置会在标签处展示tooltip提示 | string | 否 |
desc | 如配置会在ctx为edit状态下固定显示在表单项下面 | string | 否 |
hidden | 默认为false,配置为true则改表单项会隐藏 | null | boolean | 否 |
show | 配置后只有满足指定的条件后才显示,实现对目标条件的依赖联动 | string | object | function | 否 |
show.name | 目标字段名 | string | 否 |
show.value | 目标字段值 | string | number | 否 |
rules | 可以配置多条校验规则,会在form的编辑态通过@validate来校验,详见 https://github.com/yiminghe/async-validator | null | array | 否 |
rules[] | object | 否 | |
rules[].require | 是否必填 | boolean | 否 |
rules[].type | 校验类型 | "string" | "number" | "boolean" | "method" | "regexp" | "integer" | "float" | "array" | "object" | "enum" | "date" | "url" | "hex" | "email" | 否 |
props | 会透传至底层的element-ui组件作为props属性,或者是原生dom元素的属性 | object | object | 否 |
collapseLimit | 可以设置在view状态下,如果超出一定数量可以折叠,不配置或0为不折叠 | number | 否 |
useStringValue | 默认为true,会自动转换多选options内的value为string,如设置为false不转换(需要重置set和get配合) | null | boolean | 否 |
示例预览
表单展示状态
表单编辑状态
示例代码
select: {
type: 'select',
label: 'select多选',
props: {
options: {
a: '黄金糕',
b: '双皮奶',
c: '蚵仔煎',
d: '龙须面',
e: '北京烤鸭'
}
}
}
传值
String,如"a,b,c"
远程搜索
可以通过BASE: 'SELECT_REMOTE' 让select具有远程搜索的能力,需要配置 remoteConfig
,用户输入关键字时会调用remoteConfig.action,并携带当前关键字作为参数(参数名为配置的remoteConfig.queryKey)
可配置的选项为:(ams@0.7.10+)
- 成功code(全局的resource.api.successCode,或者block内resource.api.successCode)
- remoteConfig.labelKey:label的key名(默认为name)
- remoteConfig.valueKey:value的key名(默认为id)
- remoteConfig.queryKey:请求参数的key名(默认为query)
- remoteConfig.action:请求的接口地址
- remoteConfig.dataPath:数据结构的路径(默认为data.list)
- remoteConfig.debounce:用户键入关键字后的缓冲间隔(默认为500、单位ms)
- remoteConfig.isInitEmpty:回填无值时是否发起请求(默认为false)
- remoteConfig.isCache:通过action缓存合并options数据,缓存数据只会用于回填,array类型的options不支持cache(默认为true)
- remoteConfig.isLock:通过action锁定请求、多个同action不会同时发起请求(默认为true)
- remoteConfig.isMiniBackfill:最小化options回填,推荐select使用,回填时只会提供当前值对应的options(默认为true)
- remoteConfig.transform:transform函数,可以定制options数据的组装过程,参数为 $field(当前field的vue实例)、 data(接口数据),返回值为组装好的options
- remoteConfig.request:request函数(promise或者async函数),可以定制请求、用于一些需要动态请求参数的场景,参数为 $field(当前field的vue实例)、 query(关键字或者值)、isBackfill(是否是回填),返回值通过ams.request请求的完整res
场景一:远程select、关键字搜索、最小化回填、options缓存
选项值:
isInitEmpty: false,(默认)
isCache: true,(默认)
isLock: true,(默认)
isMiniBackfill: true,(默认)
场景二:远程checkbox或者radio、通过接口请求options、无关键字搜索、完整列表回填
选项值:
isInitEmpty: true,
isCache: true,(默认)
isLock: true,(默认)
isMiniBackfill: false,
默认的接口数据结构为:
{
"code": 0,
"data": {
"list": [{
"name": "a",
"id": 1
},{
"name": "b",
"id": 2
}],
"total": 2
}
}
默认的remoteConfig配置为:
// 默认remoteConfig
remoteConfig: {
labelKey: 'name',
valueKey: 'id',
queryKey: 'query',
action: '',
dataPath: 'data.list',
debounce: 500,
// 无参数时发起请求
isInitEmpty: false,
// 通过action缓存合并options数据,缓存数据只会用于回填,array类型的options不支持cache
isCache: true,
// 通过action锁定请求、多个同action不会同时发起请求
isLock: true,
// 最小化options回填,推荐select使用
isMiniBackfill: true,
transform(){...},
async request(){...},
async remoteMethod(){...}
},
// 远程select框
select: {
BASE: 'SELECT_REMOTE',
label: 'select',
type: 'select',
remoteConfig: {
action: 'http://xxx.vip.com/examples/admin/mock/simple.tags.json',
queryKey: 'requiredName'
}
}
组件更多配置可参考Element:Select 选择器中的Select Attributes