组件/Picker 滚轮选择
通用组件

Picker 滚轮选择

移动端风格的滚轮选择器,支持多列。

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

Picker 滚轮选择

移动端风格的滚轮选择器,支持多列。

基础用法

Picker

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const visible = ref(false)
const value = ref<(string | number)[]>(['b', 2])

const columns = [
  {
    key: 'letter',
    options: [
      { value: 'a', label: 'A' },
      { value: 'b', label: 'B' },
      { value: 'c', label: 'C' },
    ],
  },
  {
    key: 'number',
    options: [
      { value: 1, label: '1' },
      { value: 2, label: '2' },
      { value: 3, label: '3' },
      { value: 4, label: '4', disabled: true },
    ],
  },
]
</script>

<template>
  <div style="width: 360px; padding: 16px; border: 1px solid var(--tx-border-color); border-radius: 12px;">
    <div style="display: flex; gap: 8px; align-items: center;">
      <TxButton variant="primary" @click="visible = true">
        Open picker
      </TxButton>
      <div style="color: var(--tx-text-color-secondary);">
        Value: {{ value }}
      </div>
    </div>

    <TxPicker v-model="value" v-model:visible="visible" title="Picker" :columns="columns" />
  </div>
</template>

API

Props

属性名类型默认值说明
modelValue(string | number)[][]当前值(按列)
columnsPickerColumn[][]列定义(options)
visiblebooleanfalse弹层显示(v-model:visible)
popupbooleantrue是否使用底部弹层模式
titlestring''标题
showToolbarbooleantrue是否显示工具栏
confirmTextstring'Confirm'确认按钮文案
cancelTextstring'Cancel'取消按钮文案
disabledbooleanfalse禁用
itemHeightnumber36每项高度(px)
visibleItemCountnumber5可见项数量(会自动调整为奇数)
closeOnClickMaskbooleantrue点击遮罩关闭
lazyMountbooleantrue首次打开后再渲染弹层

PickerColumn

字段类型说明
keystring可选 key
optionsPickerOption[]选项列表

PickerOption

字段类型说明
valuestring | number
labelstring展示文本
disabledboolean是否禁用

Events

事件名参数说明
update:modelValue(value)v-model 更新
change(value)值变化
update:visible(visible)弹层显示更新
confirm(value)点击确认
cancel-点击取消
open-打开弹层
close-关闭弹层