Select 选择器

在线实验室

Select 选择器 - 图1

Select 选择器 - 图2

参数列表

参数说明可选值 | 类型必填
typefield类型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-validatornull | 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

示例预览

表单展示状态

表单编辑状态

示例代码

  1. select: {
  2. type: 'select',
  3. label: 'select多选',
  4. props: {
  5. options: {
  6. a: '黄金糕',
  7. b: '双皮奶',
  8. c: '蚵仔煎',
  9. d: '龙须面',
  10. e: '北京烤鸭'
  11. }
  12. }
  13. }

传值

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,

默认的接口数据结构为:

  1. {
  2. "code": 0,
  3. "data": {
  4. "list": [{
  5. "name": "a",
  6. "id": 1
  7. },{
  8. "name": "b",
  9. "id": 2
  10. }],
  11. "total": 2
  12. }
  13. }

默认的remoteConfig配置为:

  1. // 默认remoteConfig
  2. remoteConfig: {
  3. labelKey: 'name',
  4. valueKey: 'id',
  5. queryKey: 'query',
  6. action: '',
  7. dataPath: 'data.list',
  8. debounce: 500,
  9. // 无参数时发起请求
  10. isInitEmpty: false,
  11. // 通过action缓存合并options数据,缓存数据只会用于回填,array类型的options不支持cache
  12. isCache: true,
  13. // 通过action锁定请求、多个同action不会同时发起请求
  14. isLock: true,
  15. // 最小化options回填,推荐select使用
  16. isMiniBackfill: true,
  17. transform(){...},
  18. async request(){...},
  19. async remoteMethod(){...}
  20. },
  1. // 远程select框
  2. select: {
  3. BASE: 'SELECT_REMOTE',
  4. label: 'select',
  5. type: 'select',
  6. remoteConfig: {
  7. action: 'http://xxx.vip.com/examples/admin/mock/simple.tags.json',
  8. queryKey: 'requiredName'
  9. }
  10. }

组件更多配置可参考Element:Select 选择器Select 选择器 - 图3中的Select Attributes