Skip to content
广告位招租

优质广告位诚邀合作

本广告位曝光量正火速攀升,用户触达规模呈爆发式增长!现向品牌开放合作,趁曝光增长红利期,抓紧机会拿下,让您的品牌借势破圈!

--总浏览量(次)
--总计访客(人)

dropdown-menu v1.1.0

向下弹出的菜单列表组件,默认情况下使用dict-dropdown-menu使用, 如果字典包配置中有配置componentsPreFix字段,请根据此字段的具体配置值进行前缀修改,如配置了componentsPreFixBu, 则使用bu-dropdown-menu使用。

用于快速构建带数据字典的下拉选择器,支持双向数据绑定、自定义插槽及数据变化事件监听,适用于需要统一管理表单下拉选项的场景。

复制成功
00:00

组件结构

组件封装结构如下

vue
  <van-dropdown-menu ref="VanDropdownMenuRef">
  </van-dropdown-menu>
js
const VanDropdownMenuRef = ref(null)
const getVanDropdownMenuRef = () => {
  return VanDropdownMenuRef.value
}
defineExpose({ VanDropdownMenuRef })
属性、事件和插槽继承技巧

此组件引用了van-dropdown-menu一个组件,可直接继承原生属性、事件和插槽。

点击阅读dropdown-item组件使用文档

点击阅读dropdown-menu组件使用文档

Props 说明

参数名类型默认值说明
modelValueObject{}双向绑定的表单值,键为 data 中配置的 fieldName,值为对应字段的选中值
dataArray-下拉菜单配置数组,每个元素为单个下拉项的配置(见下表)

data 数组元素配置

data 数组中的每个元素为单个下拉项的配置,结构如下:

字段名类型说明
fieldNameString必选,绑定到 modelValue 的键名,用于关联表单值
propsObject必选,下拉项的属性配置,支持 Vant dict-dropdown-item 的所有属性(如 titleoptionsdisabled 等),同时支持以下扩展属性:
props.slotListArray可选,自定义插槽配置数组,用于渲染下拉项内部的自定义内容(见「插槽配置」)

Events 说明

事件名触发时机回调参数
update:modelValue表单值变化时(双向绑定自动触发)当前表单值(formData 对象)
dictChange下拉选项变更且确认时当前表单值(formData 对象)

暴露方法

组件通过 defineExpose 暴露以下方法,可通过 ref 调用:

方法名说明返回值
getVanDropdownMenuRef获取内部 Vant DropdownMenu 组件的 refVant DropdownMenu 实例
getVanDropdownItemRefs获取所有内部子项(DictDropdownItem)的 ref 数组子项实例数组(按 data 配置顺序排列)

插槽配置

通过 dataitem.props.slotList 可配置自定义插槽,用于在下拉项内部插入自定义内容。slotList 每个元素结构如下:

字段名类型说明
slotNameString插槽名称(对应模板中的具名插槽,如 beforeafter 等)
renderFunction,String渲染函数,接收 scopeformData 参数,返回 VNode 或 DOM 结构

注意事项

  1. 组件依赖 Vant 的 DropdownMenu 组件和自定义的 DictDropdownItem 组件,确保项目中已正确引入。
  2. modelValue 为对象类型,键需与 data 中配置的 fieldName 一一对应,否则无法正确绑定值。
  3. 自定义插槽的 render 函数需返回合法的 VNode(可使用 JSX 语法), 字符串格式时则会使用vue语法被解析为 HTML 片段。
  4. 当外部通过 v-model 手动修改值时,组件会自动同步到内部表单;若内部值变化,也会通过 update:modelValue 同步到外部。

微信公众号【爆米花小布】

0%

置顶

置顶