Skip to content

Select 选择器

当选项过多时,使用下拉菜单展示并选择内容。

基础用法

基础的选择器用法。

请选择
vue
<template>
  <ExSelect v-model="value" :options="options" placeholder="请选择" />
</template>

<script setup>
import { ref } from 'vue';

const value = ref('');
const options = [
  { value: 'option1', label: '选项一' },
  { value: 'option2', label: '选项二' },
  { value: 'option3', label: '选项三' },
  { value: 'option4', label: '选项四' },
];
</script>

不同尺寸

提供三种尺寸:small、medium(默认)、large。

小型选择器
中型选择器
大型选择器
vue
<template>
  <ExSelect size="small" placeholder="小型" />
  <ExSelect size="medium" placeholder="中型" />
  <ExSelect size="large" placeholder="大型" />
</template>

可清空

包含清空按钮,可将选择器清空为初始状态。

可清空的选择器
vue
<template>
  <ExSelect v-model="value" :options="options" clearable placeholder="可清空的选择器" />
</template>

可搜索

可以利用搜索功能快速查找选项。

vue
<template>
  <ExSelect v-model="value" :options="searchOptions" searchable placeholder="可搜索的选择器" />
</template>

分组

使用分组把选项进行分类。

分组选择器
vue
<template>
  <ExSelect v-model="value" :options="groupOptions" placeholder="分组选择器" />
</template>

禁用状态

禁用整个选择器或单个选项。

选项一
部分选项禁用
vue
<template>
  <!-- 禁用整个选择器 -->
  <ExSelect disabled placeholder="禁用的选择器" />

  <!-- 禁用部分选项 -->
  <ExSelect v-model="value" :options="disabledOptions" placeholder="部分选项禁用" />
</template>

API

Props

参数说明类型可选值默认值
modelValue / v-model绑定值string / number
options选项数据SelectOptions[]
placeholder占位文本string'请选择'
size尺寸SelectSizesmall / medium / largemedium
disabled是否禁用booleanfalse
clearable是否可清空booleanfalse
searchable是否可搜索booleanfalse
searchPlaceholder搜索框占位文本string'搜索...'
noDataText无数据时的文本string'暂无数据'
popperClass下拉框的类名string

Events

事件名说明回调参数
update:modelValue值变化时触发(value: string | number)
change选中值发生变化时触发(value: string | number)
visible-change下拉框出现/隐藏时触发(visible: boolean)
clear点击清空按钮时触发
blur失去焦点时触发(event: FocusEvent)
focus获得焦点时触发(event: FocusEvent)

Exposes

方法名说明参数
focus使选择器获得焦点
blur使选择器失去焦点

Types

typescript
type SelectSize = 'small' | 'medium' | 'large';

interface SelectOption {
  value: string | number;
  label: string;
  disabled?: boolean;
  keywords?: string[];
}

interface SelectOptionGroup {
  label: string;
  options: SelectOption[];
}

type SelectOptions = (SelectOption | SelectOptionGroup)[];