TIP
这个组件目前在测试当中,如果在使用中发现任何漏洞和问题,请在 GitHub 中提交 issue 以便我们进行处理。
TIP
在 SSR 场景下,您需要将组件包裹在 <client-only></client-only> 之中 (如: Nuxt) 和 SSG (例如: VitePress).
背景#
在某些使用情况下,单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担,从而造成性能问题。 为了更好的用户和开发者体验,我们决定添加此组件。
基础用法#
适用广泛的基础选择器
Please select
Please select
Please select
多选#
最基础的多选选择器
Please select
隐藏多余标签的多选#
默认情况下选中值会以 Tag 的形式展现,你也可以设置collapse-tags属性将它们合并为一段文字。 您可以使用 collapse-tags-tooltip 属性来启用鼠标悬停折叠文字以显示具体所选值的行为。
use collapse-tags
Please select
use collapse-tags-tooltip
Please select
use max-collapse-tags
Please select
可过滤的多选#
当选项太多时,你可以使用 filterable 选项来启用过滤功能来找到所需的选项。
Please select
禁用选择器本身或选项#
您可以选择禁用 Select 或者 Select 中的某个选项。
Please select
Please select
给选项进行分组#
只要数据格式满足特定要求,我们就可以按照自己的意愿为选项进行分组。
Please select
自定义选项的渲染模板#
我们也可以通过自定义模板来渲染自己想要的选项内容。
Please select
一键清除#
我们可以同时清除所有选定的选项。此设定也适用于单选。
Please select
Please select
创建临时选项#
创建并选中未包含在初始选项中的条目。
通过使用 allow-create 属性,用户可以通过输入框创建新项目。 为了使 allow-create 正常工作, filterable 的值必须为 true。
TIP
最好在使用 allow-create 属性的同时设置 :reserve-keyword="false"。
Please select
Please select
set reserve-keyword false
Please select
远程搜索#
输入关键字以从远程服务器中查找数据。
从服务器搜索数据,输入关键字进行查找。为了启用远程搜索,需要将filterable和remote设置为true,同时传入一个remote-method。 remote-method为一个Function,它会在输入值发生变化时调用,参数为当前输入值。
Please enter a keyword
使用 value-key 键属性#
当 options.value 是一个对象时,您应该为它设置一个唯一的标识名称
TIP
在 2.4.0 之前,value-key既用作所选对象的唯一值,也用作options中表示值的对应 key。 现在 value-key 仅作为所选对象的唯一值使用,选项中值的 key 是 props.value.
a0
自定义选项2.4.2#
当您的 options 格式不同于默认格式 您可以通过 props 属性自定义 options
Please select
自定义标签2.5.0#
您可以自定义标签。
将自定义的标签插入 el-select 的 slot 中即可。 collapse-tags, collapse-tags-tooltip, max-collapse-tags 在此模式下不生效.
SelectV2 属性#
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| model-value / v-model | 绑定值 | string / number / boolean / object / array | — |
| options | 选项的数据源, value 的 key 和 label 可以通过 props自定义. | array | — |
| props 2.4.2 | 配置选项,具体看下表 | object | — |
| multiple | 是否多选 | boolean | false |
| disabled | 是否禁用 | boolean | false |
| value-key | 作为 value 唯一标识的键名,绑定值为对象类型时必填 | string | value |
| size | 组件大小 | enum | — |
| clearable | 是否可以清空选项 | boolean | false |
| clear-icon | 自定义清除图标 | string / object | CircleClose |
| collapse-tags | 多选时是否将选中值按文字的形式展示 | boolean | false |
| multiple-limit | 多选时可被选择的最大数目。 当被设置为0时,可被选择的数目不设限。 | number | 0 |
| name | 选择器的原生name属性 | string | — |
| effect | tooltip 主题,内置了 dark / light 两种 | enum / string | light |
| autocomplete | 自动完成选择输入 | string | off |
| placeholder | placeholder | string | Please select |
| filterable | 是否可筛选 | boolean | false |
| allow-create | 是否允许创建新条目, 当使用该属性时,filterable必须设置为true | boolean | false |
| filter-method | 自定义筛选方法 | Function | — |
| loading | 是否从远程加载数据 | boolean | false |
| loading-text | 从服务器加载数据时显示的文本,默认为“Loading” | string | — |
| reserve-keyword | 筛选时,是否在选择选项后保留关键字 | boolean | true |
| no-match-text | 搜索条件无匹配时显示的文字,也可以使用 empty 插槽设置,默认是 “No matching data'” | string | — |
| no-data-text | 当在没有数据时显示的文字,你同时可以使用empty插槽进行设置。 | string | No Data |
| popper-class | 选择器下拉菜单的自定义类名 | string | — |
| popper-append-to-body deprecated | 是否将弹出框插入至 body 元素 当弹出框的位置出现问题时,你可以尝试将该属性设置为false。 | boolean | false |
| teleported | 是否将下拉列表元素插入 append-to 指向的元素下 | boolean | true |
| persistent | 当下拉选择器未被激活并且persistent设置为false,选择器会被删除。 | boolean | true |
| popper-options | popper.js parameters | objectrefer to popper.js doc | {} |
| automatic-dropdown | 对于不可搜索的 Select,是否在输入框获得焦点后自动弹出选项菜单 | boolean | false |
| height | 下拉菜单的高度,每一个选项为34px | number | 274 |
| item-height | 下拉项的高度 | number | 34 |
| scrollbar-always-on | 是否总是展示滚动条 | boolean | false |
| remote | 是否从服务器获取数据 | boolean | false |
| remote-method | 当输入值发生变化时触发的函数。 它的参数就是当前的输入值。 当filterable设置为 true 时才会生效 | Function | — |
| validate-event | 是否触发表单验证 | boolean | true |
| placement | 下拉框出现的位置 | enum | bottom-start |
| collapse-tags-tooltip 2.3.0 | 当鼠标悬停于折叠标签的文本时,是否显示所有选中的标签。 只有当 collapse-tags 设置为 true 时才会生效。 | boolean | false |
| max-collapse-tags 2.3.0 | 需要显示的 Tag 的最大数量 只有当 collapse-tags 设置为 true 时才会生效。 | number | 1 |
| tag-type 2.5.0 | 标签类型 | enum | info |
| aria-label a11y 2.5.0 | 等价于原生 input aria-label 属性 | string | — |
props#
| Attribute | 说明 | Type | Default |
|---|---|---|---|
| value | 指定选项的值为选项对象的某个属性值 | string | value |
| label | 指定节点标签为节点对象的某个属性值 | string | label |
| options | 指定选项的子选项为选项对象的某个属性值 | string | options |
| disabled | 指定选项的禁用为选项对象的某个属性值 | string | disabled |
SelectV2 事件#
| 插槽名 | 说明 | 参数 |
|---|---|---|
| change | 选中值发生变化时触发 | Function |
| visible-change | 下拉框出现/隐藏时触发 | Function |
| remove-tag | 多选模式下移除tag时触发 | Function |
| clear | 可清空的单选模式下用户点击清空按钮时触发 | Function |
| blur | 当选择器的输入框失去焦点时触发 | Function |
| focus | 当选择器的输入框获得焦点时触发 | Function |
SelectV2 插槽#
| 名称 | 详情 |
|---|---|
| default | 自定义 Option 模板 |
| empty | 自定义当选项为空时的内容 |
| prefix | 输入框的前缀 |
| tag 2.5.0 | select 组件自定义标签内容 |
Select Exposes#
| 方法 | 描述 | 类型 |
|---|---|---|
| focus | 使选择器的输入框获取焦点 | Function |
| blur | 使选择器的输入框失去焦点,并隐藏下拉框 | Function |
源代码#
组件 • 文档