Skip to content

Dropdown 下拉菜单

介绍

向下、向上弹出的菜单列表,常用于列表数据筛选。

基础用法

通过 v-model绑定选中的值,通过 options 配置下拉列表的选项。

html
<vd-dropdown>
  <vd-dropdown-item v-model="sort.value" :options="sort.options" />
  <vd-dropdown-item v-model="sortType.value" :options="sortType.options" />
</vd-dropdown>
ts
const sort = reactive({
  value: '',
  options: [
    { label: '综合排序', value: '1' },
    { label: '信用排序', value: '2' },
    { label: '距离排序', value: '3' },
  ],
});

const sortType = reactive({
  value: '',
  options: [
    { label: '从高到低', value: '1' },
    { label: '从低到高', value: '2' },
  ],
});

自定义菜单内容

通过默认插槽可自定义菜单内容。

html
<vd-dropdown>
  <vd-dropdown-item v-model="sort.value" :options="sort.options" />
  <vd-dropdown-item title="其他筛选">
    <vd-cell-group :center="true">
      <vd-cell title="包邮"><vd-switch v-model="chose.a" :size="22" /></vd-cell>
      <vd-cell title="省内"><vd-switch v-model="chose.b" :size="22" /></vd-cell>
      <vd-cell title="七天无理由"><vd-switch v-model="chose.c" :size="22" /></vd-cell>
    </vd-cell-group>
  </vd-dropdown-item>
</vd-dropdown>
ts
const sort = reactive({
  value: '',
  options: [
    { label: '综合排序', value: '1' },
    { label: '信用排序', value: '2' },
    { label: '距离排序', value: '3' },
  ],
});

const chose = reactive({
  a: false,
  b: false,
  c: false,
});

自定义导航图标

通过 arrow 插槽可自定义导航图标。

html
<vd-dropdown>
  <vd-dropdown-item v-model="sort.value" :options="sort.options" />
  <vd-dropdown-item v-model="sortType.value" :options="sortType.options" />

  <template #arrow="{ index }">
    <vd-icon v-if="index === 0" name="arrow-bottom" />
    <vd-icon v-else-if="index === 1" name="arrow-bottom-double" />
  </template>
</vd-dropdown>
ts
const sort = reactive({
  value: '',
  options: [...],
});

const sortType = reactive({
  value: '',
  options: [...],
});

弹出方向

通过 direction 属性设置弹出方向。

html
<vd-dropdown direction="up">
  <vd-dropdown-item v-model="sort.value" :options="sort.options" />
  <vd-dropdown-item v-model="sortType.value" :options="sortType.options" />
</vd-dropdown>
ts
const sort = reactive({
  value: '',
  options: [...],
});

const sortType = reactive({
  value: '',
  options: [...],
});

禁用状态

通过 disabled 属性禁用下拉菜单。

html
<vd-dropdown>
  <vd-dropdown-item v-model="sort.value" :options="sort.options" disabled />
  <vd-dropdown-item v-model="sortType.value" :options="sortType.options" disabled />
</vd-dropdown>
ts
const sort = reactive({
  value: '',
  options: [...],
});

const sortType = reactive({
  value: '',
  options: [...],
});

API

参数说明类型默认值
direction菜单展开方向'up' | 'down''down'
duration动画时长string | number300
overlay是否展示遮罩层booleantrue
overlay-class遮罩类名ClassValue-
overlay-style遮罩样式StyleValue-
close-on-click-overlay是否点击遮罩关闭booleantrue
close-on-click-outside点击元素外部后关闭booleantrue
z-index层级number2001+
参数说明类型默认值
v-model当前选中值string | number-
options选项组SelectOption[][]
title自定义标题,默认展示选中项的标签string-
placeholder占位符string-
loading是否加载中booleanfalse
loading-type加载中类型LoadingType'spinner'
disabled是否禁用booleanfalse
index索引,小程序下需要在循环时设置该值string | number-

代替原始 Props

参数说明类型默认值
custom-id根节点idstring-
custom-class根节点类名ClassValue-
custom-style根节点样式StyleValue-
事件名说明回调参数
click点击时触发MouseEvent
click-overlay点击遮罩触发MouseEvent
click-outside点击外部触发MouseEvent
事件名说明回调参数
click点击时触发MouseEvent
click-option点击选项时触发SelectOption
change改变时触发SelectOption
open打开时触发-
opened打开动画结束时触发-
close关闭时触发-
closed关闭动画结束时触发-

赣ICP备2025061025号-1