 YbSelect 选择器
YbSelect 选择器
  在el-select (opens new window)基础功能上扩展,将 el-option 处理成数数据结构的方式 ,不仅支持 el-select 的所有功能,增加了 多选模式的全选等。
yb-select 不直接依赖 el-select,而是依赖 yb-select-base
yb-select-base 与 el-select 功能等同,yb-select-base 在 el-select 基础上改了一点源码,为解决多选模式下又在 transform:scale(0.6) 缩放了整个下拉框组件的情况,出现高度/宽度计算不准问题:

函数request 与 el-select 的filter-method、remote-method的区别:
request 在组件初始化时会调用一次获取第一份 options
request + filterable 效果与 el-select 的 filterable 相同
request + filterable + filter-method 效果与 el-select 的 filterable+ filter-method 相同
request + filterable + remote可以达到 remote-method + filterable +remote 的远程搜索目的
request + params 可以方便实现其他控件的值通过 params 传入且改变时,触发 request ,达到控件间的联动请求 options
# 基本用法
# 选中值为 Object 类型
- 期望 value 值为 object 类型时使用 optionInValue 属性
# 枚举用法
- 枚举的键:选项的 key 和 value
- 枚举的键值:选项的 label
# 懒加载
- params 默认请求参数,当改变时,会触发请求
# 分组
# 选项横排
# 其他属性
# 全选
- 全选功能默认 multiple 属性为 true 时生效,需要关闭则 is-show-select-all 设置为 false
- 若设置全选,并设置 multiple-limit,会自动叠加未选中数据的前几项
- 若选项中存在禁用状态的选项,点击全选也无法被选中
# 插槽使用
# 可搜索
- 设置 filterable 和 remote 为 true,request 函数即可远程搜索,并且提供 params.queryWord
原 el-select 的 value-key 优先级高于 optionsFieldMap.key,用途是一样的,定义了optionsFieldMap.key 就可以不用 value-key 了
# YbSelect Attributes
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 
|---|---|---|---|---|
| options | 下拉选项数据,优先级仅次于 request | array | -- | -- | 
| valueEnum | 下拉选项数据枚举,优先级最低 | object | -- | -- | 
| request | 加载下拉选项数据,返回 Promise 或者 Array,优先级最高 | function({queryWord,...others}){} | -- | -- | 
| params | 加载下拉选项数据的请求参数,与 request 配合使用,当数据改变时,触发 request | object | -- | -- | 
| debounceTime | 防抖动时间,与 request 配合使用 | number | -- | 300 | 
| searchWhenOpen | 是否每次打开面板加载数据,与 request 配合使用 | boolean | -- | -- | 
| 改名为 optionsFieldMap | object | -- | -- | |
| optionsFieldMap | 选项中字段映射,如果全选无效请确认是否给定 optionsFieldMap.key,详见 YbSelect optionsFieldMap | object | -- | -- | 
| formatter | 格式化数据,function(item) 需返回渲染数据 | function | -- | -- | 
| dependence | 依赖字段,当设置依赖字段时,只有依赖字段值发生变化才会调用 request | array | -- | -- | 
| isShowSelectAll | 是否显示全选,详见 全选用法 | boolean | -- | true | 
| optionInValue | 选项的 value 为 object 类型,详见 Object 用法 | boolean | -- | false | 
| expandedKeys | 当存在分组的选项时,展开的分组的 keys , 支持 sync 修饰符 | array | -- | -- | 
| defaultExpandAll | 当存在分组的选项时,是否默认全部展开 , 如果是数字类型,可以让前几组默认展开 | boolean | number | -- | true | 
| optionsArrangeToRight | 选项是否从左往右排布,一行最多排 4 个 | boolean | -- | false | 
| valueChangeToRequest | 当使用了 request 获取选项时,只要 value 在外部被改变时会触发一次 request 函数,无论 searchWhenOpen 是否开启 | boolean | -- | false | 
| -- | 其他属性同 el-select (opens new window) | -- | -- | -- | 
# YbSelect optionsFieldMap
| 参数 | 说明 | 类型 | 可选值 | 默认值 | 
|---|---|---|---|---|
| label | 指定节点标签为节点对象的某个属性值 | string | -- | 'label' | 
| value | 指定节点值为节点对象的某个属性值 | string | -- | 'value' | 
| key | 指定节点 key 为节点对象的某个属性值,在多选和 optionInValue 时,请保证 options[optionsFieldMap.key]值是唯一的 | string | -- | 'value' | 
| disabled | 指定节点禁用为节点对象的某个属性值 | string | -- | 'disabled' | 
| children | 指定节点分组子节点数据为节点对象的某个属性值 | string | -- | 'children' | 
# YbSelect Slots
| name | 说明 | 
|---|---|
| default | 下拉选项内容,在渲染的选项最后显示 | 
| prefix | Select 组件头部内容 | 
| empty | 无选项时的列表 | 
| top | 下拉面板顶部 | 
| bottom | 下拉面板底部 | 
# YbSelect Scoped Slots
| name | 说明 | 参数 | 
|---|---|---|
| option | 下拉选项 | { optionItem, options } | 
# YbSelect Methods
| 方法名称 | 说明 | 参数 | 返回值 | 
|---|---|---|---|
| getSelect | 取得 el-select 的组件实例 | - | - | 
| setOptionsLoading | 用于显示/取消显示下拉框内的 loading | boolean | - | 
调用el-select Methods (opens new window)的方法,调用方式是 this.$refs['select']['methodName']()
// 例如
this.$refs['select'].getSelect().focus();
2
