pumpkin-ui
指南
组件
指南
组件
  • 基础组件

    • Button 按钮
    • Cell 单元格
    • Icon 图标
    • Popup 弹出层
    • Toast 轻提示
  • 表单组件

    • PickerView 选择器视图
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Switch 开关
    • Field 输入项
    • Form 表单
    • Checkbox 复选框
    • Radio 单选框
  • 反馈组件

    • Overlay 遮罩
    • Loading 加载
    • ActionSheet 动作面板
    • Notify 消息提示
    • Skeleton 骨架屏
    • Dialog 对话框
  • 展示组件

    • Progress 进度条
    • Divider 分割线
    • Badge 徽标
    • Empty 空元素
    • Tag 标签

Picker 选择器

基本使用

命令式调用

script


import { Toast, Picker } from "@pumpkin-ui/mobile"
    Picker.showPicker([{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }]
    }]).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })

代码示例

基础用法

通过showPicker方法调用,传入数据,即可展示选择器。

template
<div class="picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDefaultPicker">
            <template #title>基础用法</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, Picker } from "@pumpkin-ui/mobile"
const items = [{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }, {
        label: '橙子',
        value: '橙子',
        children: [
            {
                label: '甜',
                value: '甜'
            },
            {
                label: '酸',
                value: '酸'
            }
        ]
    }]
}]

const showDefaultPicker = () => {
    Picker.showPicker(items).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })
}

style
.picker-container {
    padding: 10px 0;
}

修改toolbar

可通过cancelText、confirmText、title属性分别设置取消文案、确认文案和标题。

template
<div class="picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showChangeToolbar">
            <template #title>修改toolbar</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, Picker } from "@pumpkin-ui/mobile"
const items = [{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }, {
        label: '橙子',
        value: '橙子',
        children: [
            {
                label: '甜',
                value: '甜'
            },
            {
                label: '酸',
                value: '酸'
            }
        ]
    }]
}]

const showChangeToolbar = () => {
    Picker.showPicker({
        items,
        cancelText: '我要取消',
        confirmText: '我要确定',
        title: '请选择'
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })
}

style
.picker-container {
    padding: 10px 0;
}

设置默认值

通过current属性设置默认值。current是一个数组,代表着各列默认的value值。

template
<div class="picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDefaultValuePicker">
            <template #title>设置默认值</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, Picker } from "@pumpkin-ui/mobile"
const items = [{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }, {
        label: '橙子',
        value: '橙子',
        children: [
            {
                label: '甜',
                value: '甜'
            },
            {
                label: '酸',
                value: '酸'
            }
        ]
    }]
}]

const showDefaultValuePicker = () => {
    Picker.showPicker({
        items,
        current: ['水果', '橙子', '酸']
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })
}

style
.picker-container {
    padding: 10px 0;
}

监听onChange事件

通过onChange回调监听当前Picker的值变化。

template
<div class="picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showOnChangeToolbar">
            <template #title>监听onChange事件</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, Picker } from "@pumpkin-ui/mobile"
const items = [{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }, {
        label: '橙子',
        value: '橙子',
        children: [
            {
                label: '甜',
                value: '甜'
            },
            {
                label: '酸',
                value: '酸'
            }
        ]
    }]
}]

const showOnChangeToolbar = () => {
    Picker.showPicker({
        items,
        onChange: (values) => {
            Toast.show(`值变化:${JSON.stringify(values.map(item => item.label))}`)
        }
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })
}

style
.picker-container {
    padding: 10px 0;
}

禁用点击遮罩层关闭

通过设置closeOnPressOverlay为false禁用点击遮罩层关闭Picker。

template
<div class="picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showNotCloseOnPressOverlay">
            <template #title>禁用点击overlay关闭</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, Picker } from "@pumpkin-ui/mobile"
const items = [{
    label: '水果',
    value: '水果',
    children: [{
        label: '苹果',
        value: '苹果'
    }, {
        label: '香蕉',
        value: '香蕉'
    }, {
        label: '橙子',
        value: '橙子',
        children: [
            {
                label: '甜',
                value: '甜'
            },
            {
                label: '酸',
                value: '酸'
            }
        ]
    }]
}]

const showNotCloseOnPressOverlay = () => {
    Picker.showPicker({
        items,
        closeOnPressOverlay: false
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.label))}`)
        else Toast.show('取消选择')
    })
}

style
.picker-container {
    padding: 10px 0;
}

API

命令式调用

方法

方法说明类型
Picker.showPicker显示Picker(option: PickerOptions | PickerItem[])=>Promise<PickerCallbackParams>

PickerOptions

属性名说明类型默认值
current选择器的默认值PickerItem['value'][]
backgroundColor选择器的背景颜色string
round是否圆角booleantrue
closeOnPressOverlay点击遮罩层是否关闭booleantrue
items选择器的选项数据PickerItem[][]
visibleItemCount选择器可视的选项数量number5
itemHeight选择器单个选项的高度,单位为pxnumber50
overlay是否显示遮罩层booleantrue
overlayBackgroundColor遮罩层背景颜色string
fade弹出层是否以fade动画形式打开关闭booleanfalse
zIndex层级number
title选择器的toolbar标题string
cancelText选择器的toolbar取消文案string取消
confirmText选择器的toolbar确定文案string确定
onChange选择器值变化时触发的回调(用户主动触发)(values:PickerItem[])=>void
onCancel选择器取消时触发的回调()=>void
onConfirm选择器确认时触发的回调(values:PickerItem[])=>void
onClose选择器关闭时触发的回调()=>void
onClosed选择器关闭动画结束时触发的回调()=>void
onOpen选择器打开时触发的回调()=>void
onOpened选择器打开动画结束时触发的回调()=>void

PickerItem

属性名说明类型必选
label选项文本string|number是
value选项值string|number是
children子选项PickerItem[]

PickerCallbackParams

属性名说明类型默认值
type类型'confirm'|'cancel'
items选项(confirm时才有)PickerItem[]

Props

属性名说明类型默认值可选值
v-model是否显示选择器组件,双向绑定boolean
v-model:current选择器选中列PickerItem['value'][]
background-color选择器的背景颜色string
round是否圆角booleantrue
close-on-press-overlay点击遮罩层是否关闭booleantrue
items选择器的选项数据PickerItem[][]
visibleItemCount选择器可视的选项数量number5
itemHeight选择器单个选项的高度,单位为pxnumber50
overlay是否显示遮罩层booleantrue
overlay-background-color遮罩层背景颜色string
fade弹出层是否以fade动画形式打开关闭booleanfalse
zIndex层级number
title选择器的toolbar标题string
cancelText选择器的toolbar取消文案string取消
confirmText选择器的toolbar确定文案string确定

Events

事件名说明回调参数
onOpen打开时触发() => void
onClose打开时触发() => void
onOpened打开动画结束时触发() => void
onClosed关闭动画结束时触发() => void
onCancel点击取消时的回调()=>void
onConfirm选择器确认时触发的回调(values:PickerItem[])=>void
onChange选择器值变化时触发的回调(用户主动触发)(values:PickerItem[])=>void

Slot

插槽名说明

Exposes

名称说明类型说明
updateShow更新选择器显示(show:boolean = true)=>void

样式变量

名称默认值说明
--pk-picker-backgroundvar(--pk-bg-color)
Last Updated:
Contributors: yranky
Prev
PickerView 选择器视图
Next
DatePicker 日期时间选择器