Skip to content

Picker 选择器

介绍

提供多个选项集合供用户选择,支持单列选择、多列选择和级联选择。

基础用法

通过 v-model 绑定选中的值,通过 columns 属性配置选项数据。

html
<vd-picker v-model="picker.value" :columns="picker.columns" title="基础用法" />
ts
const picker = reactive({
  value: '1',
  columns: [
    { label: '测试1', value: '1' },
    { label: '测试2', value: '2' },
    { label: '测试3', value: '3' },
  ],
});

多列选项

columns 为二维数组结构时,将渲染多列选项数据。

html
<vd-picker v-model="picker.value" :columns="picker.columns" title="多列选项" />
ts
const picker = reactive({
  show: false,
  value: '1',
  columns: [
    [
      { label: '测试1', value: '1' },
      { label: '测试2', value: '2' },
      { label: '测试3', value: '3' },
    ],
    [
      { label: '测试1', value: '1' },
      { label: '测试2', value: '2' },
      { label: '测试3', value: '3' },
    ],
    [
      { label: '测试1', value: '1' },
      { label: '测试2', value: '2' },
      { label: '测试3', value: '3' },
    ]
  ],
});

级联选项

columns 为子父级数组结构时,将渲染级联选项数据。

html
<vd-picker v-model="picker.value" :columns="picker.columns" title="级联选项" />
ts
const picker = reactive({
  show: false,
  value: '1',
  columns: [
    {
      label: '测试1',
      value: '1',
      children: [
        { label: '测试1-1', value: '1-1' },
        { label: '测试1-2', value: '1-2' },
        { label: '测试1-3', value: '1-3' },
      ],
    },
    {
      label: '测试2',
      value: '2',
      children: [
        { label: '测试2-1', value: '2-1' },
        { label: '测试2-2', value: '2-2' },
        { label: '测试2-3', value: '2-3' },
      ],
    },
    {
      label: '测试3',
      value: '3',
      children: [
        { label: '测试3-1', value: '3-1' },
        { label: '测试3-2', value: '3-2' },
        { label: '测试3-3', value: '3-3' },
      ],
    }
  ],
});

自定义选项字段

通过 fields 属性配置选项字段,支持 labelvaluechildren 字段。

html
<vd-picker
  v-model="picker.value"
  title="自定义选项字段"
  :columns="picker.columns"
  :fields="fields"
/>
ts
import { PickerFields } from 'vital-design';

const fields: PickerFields = {
  label: 'text',
  value: 'name',
  children: 'children',
};

const picker = reactive({
  value: '1',
  columns: [
    { text: '测试1', name: '1' },
    { text: '测试2', name: '2' },
    { text: '测试3', name: '3' },
  ],
});

搭配弹出层使用

可搭配 Popover 组件使用,实现弹出层选择组。

html
<vd-cell title="单列选项" is-link @click="picker.show = true" />

<vd-popup v-model="picker.show" position="bottom" round>
  <vd-picker v-model="picker.value" :columns="picker.columns" title="单列选项" />
</vd-popup>
ts
const picker = reactive({
  show: false,
  value: '1',
  columns: [
    { label: '测试1', value: '1' },
    { label: '测试2', value: '2' },
    { label: '测试3', value: '3' },
  ],
});

API

Props

参数说明类型默认值
v-model选中值string | number | (string | number)[]-
columns列数据(PickerColumn | PickerOption)[]-
title标题string-
fields选项字段PickerFields-
loading是否加载中booleanfalse
loading-type是否加载中LoadingTypespinner
confirm-button-text确认按钮文字string-
cancel-button-text取消按钮文字string-
immediate-change是否在手指松开时立即触发 change 事件booleantrue

代替原始 Props

参数说明类型默认值
custom-id根节点idstring-
custom-class根节点类名ClassValue-
custom-style根节点样式StyleValue-

Events

事件名说明回调参数
click点击时触发MouseEvent
change改变时触发PickerSelectedChangeData
updated更新时触发PickerSelectedData
confirm确认时触发PickerSelectedData
cancel取消时触发PickerSelectedData

Slots

名称说明
toolbar工具栏
option选择项
loading加载中

赣ICP备2025061025号-1