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