Skip to content
本页导读

Picker 选择器

组件类型:UxPickerComponentPublicInstance

支持单列、多列、联动选择,主题样式可配置

平台兼容性

AndroidiOSweb鸿蒙 Next小程序
xx

Props

属性名类型默认值说明
nameString-标识符,在回调事件中返回
dataUXPickerData[][]-二维数组
valueany[]-
linkBooleanfalse是否联动
titleString-标题
titleColorString$ux.Conf.titleColor标题颜色
sizeNumber$ux.Conf.fontSize内容大小
colorString$ux.Conf.fontColor内容颜色
darkColorString-深色
selectColorString$ux.Conf.fontColor内容选中颜色
selectStyleStringborder选择区域遮罩样式
confirmString'确定'确定文字
confirmColorString$ux.Conf.primaryColor确定文字颜色
btnSizeNumber$ux.Conf.fontSize按钮大小
btnTypeString'normal'按钮类型
radiusNumber$ux.Conf.radius圆角
opacityNumber$ux.Conf.maskAlpha遮罩透明度 0-1
touchableBooleanfalse允许滑动关闭
maskCloseBooleantrue遮罩层关闭
disabledBooleanfalse是否禁用

btnType

说明
normal正常
bigger大按钮

darkColor

说明
none不显示
auto自动适配深色模式
color其他颜色

selectStyle

说明
border边框
box盒子

Events

事件名说明参数
change确定选择事件event: UXPickerEvent

示例代码

html
<template>
	<ux-page>
		<ux-navbar :title="title" :border="false"></ux-navbar>
		
		<ux-scroll v-if="isOk">
			<ux-card direction="column" icon="flag" title="选择器" :bold="true">
				<ux-text text="支持单列、多列、联动选择,主题样式可配置"></ux-text>
				<ux-row :flex="true" align="top" :mt="5" style="width: 100%;">
					<ux-text text="详细文档:"></ux-text>
					<ux-text style="flex: 1" name="选择器" text="https://www.uxframe.cn/component/form/picker.html" mode="link"></ux-text>
				</ux-row>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="选择方式" :bold="true">
				<ux-text text="支持单列、多列、联动选择" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :data="data1" :value="[1]" @change="change1">
						<ux-cell title="单列" right-icon="arrowdown" :label="value1" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker selectStyle="box" :data="data2" :value="[1, 2]" @change="change2">
						<ux-cell title="双列" right-icon="arrowdown" :label="value2" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker selectStyle="box" :data="data4" :link="true" btnType="bigger" @change="change3">
						<ux-cell title="多级联动" right-icon="arrowdown" :label="value3" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="关闭方式" :bold="true">
				<ux-text text="支持不允许点击遮罩层关闭、滑动关闭" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :data="data2" :mask-close="false" @change="change5">
						<ux-cell title="不允许点击遮罩层关闭" right-icon="arrowdown" :label="value5" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data2" :touchable="true" @change="change6">
						<ux-cell title="允许滑动关闭" right-icon="arrowdown" :label="value6" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="自定义" :bold="true">
				<ux-text text="支持自定义样式、标题、按钮类型" :mb="15"></ux-text>
				<ux-col>
					<ux-picker selectStyle="box" btnType="bigger" :data="data2" :size="16" select-color="red" :bold="true" confirm="提交" confirmColor="red"
						@change="change7">
						<ux-cell title="自定义样式" right-icon="arrowdown" :label="value7" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data3" title="请问您想好了吗?" title-color="red" @change="change4">
						<ux-cell title="设置标题" right-icon="arrowdown" :label="value4" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data2" btnType="bigger" :mask-close="false" @change="change5">
						<ux-cell title="大按钮" right-icon="arrowdown" :label="value5" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="禁用" :bold="true">
				<ux-text text="禁用组件" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :disabled="true">
						<ux-cell :disabled="true" title="禁用" right-icon="arrowdown" placeholder="暂无权限" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-placeholder :height="200">
				<ux-row justify="center" align="center" style="height: 100%;">
					<ux-text prefix-icon="wink" text="真的没有了~"></ux-text>
				</ux-row>
			</ux-placeholder>
		</ux-scroll>
	</ux-page>
</template>
<template>
	<ux-page>
		<ux-navbar :title="title" :border="false"></ux-navbar>
		
		<ux-scroll v-if="isOk">
			<ux-card direction="column" icon="flag" title="选择器" :bold="true">
				<ux-text text="支持单列、多列、联动选择,主题样式可配置"></ux-text>
				<ux-row :flex="true" align="top" :mt="5" style="width: 100%;">
					<ux-text text="详细文档:"></ux-text>
					<ux-text style="flex: 1" name="选择器" text="https://www.uxframe.cn/component/form/picker.html" mode="link"></ux-text>
				</ux-row>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="选择方式" :bold="true">
				<ux-text text="支持单列、多列、联动选择" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :data="data1" :value="[1]" @change="change1">
						<ux-cell title="单列" right-icon="arrowdown" :label="value1" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker selectStyle="box" :data="data2" :value="[1, 2]" @change="change2">
						<ux-cell title="双列" right-icon="arrowdown" :label="value2" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker selectStyle="box" :data="data4" :link="true" btnType="bigger" @change="change3">
						<ux-cell title="多级联动" right-icon="arrowdown" :label="value3" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="关闭方式" :bold="true">
				<ux-text text="支持不允许点击遮罩层关闭、滑动关闭" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :data="data2" :mask-close="false" @change="change5">
						<ux-cell title="不允许点击遮罩层关闭" right-icon="arrowdown" :label="value5" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data2" :touchable="true" @change="change6">
						<ux-cell title="允许滑动关闭" right-icon="arrowdown" :label="value6" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="自定义" :bold="true">
				<ux-text text="支持自定义样式、标题、按钮类型" :mb="15"></ux-text>
				<ux-col>
					<ux-picker selectStyle="box" btnType="bigger" :data="data2" :size="16" select-color="red" :bold="true" confirm="提交" confirmColor="red"
						@change="change7">
						<ux-cell title="自定义样式" right-icon="arrowdown" :label="value7" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data3" title="请问您想好了吗?" title-color="red" @change="change4">
						<ux-cell title="设置标题" right-icon="arrowdown" :label="value4" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
					
					<ux-picker :data="data2" btnType="bigger" :mask-close="false" @change="change5">
						<ux-cell title="大按钮" right-icon="arrowdown" :label="value5" placeholder="请选择" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="禁用" :bold="true">
				<ux-text text="禁用组件" :mb="15"></ux-text>
				<ux-col>
					<ux-picker :disabled="true">
						<ux-cell :disabled="true" title="禁用" right-icon="arrowdown" placeholder="暂无权限" placeholder-color="#999"></ux-cell>
					</ux-picker>
				</ux-col>
			</ux-card>
			
			<ux-placeholder :height="200">
				<ux-row justify="center" align="center" style="height: 100%;">
					<ux-text prefix-icon="wink" text="真的没有了~"></ux-text>
				</ux-row>
			</ux-placeholder>
		</ux-scroll>
	</ux-page>
</template>
ts
<script setup>
	import { UXPickerData, UXPickerEvent } from '@/uni_modules/ux-frame/libs/types/types.uts'
	
	let title = ''
	const isOk = ref(false)
	const value1 = ref('')
	const value2 = ref('')
	const value3 = ref('')
	const value4 = ref('')
	const value5 = ref('')
	const value6 = ref('')
	const value7 = ref('')
	
	const data1 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data2 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[],
		[{
			name: '1个',
			value: '0'
		}, {
			name: '2个',
			value: '1'
		}, {
			name: '3个',
			value: '2'
		}, {
			name: '4个',
			value: '3'
		}, {
			name: '5个',
			value: '4'
		}, {
			name: '6个',
			value: '5'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data3 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[],
		[{
			name: '1个',
			value: '0'
		}, {
			name: '2个',
			value: '1'
		}, {
			name: '3个',
			value: '2'
		}, {
			name: '4个',
			value: '3'
		}, {
			name: '5个',
			value: '4'
		}, {
			name: '6个',
			value: '5'
		}] as UXPickerData[],
		[{
			name: '1元',
			value: '0'
		}, {
			name: '2元',
			value: '1'
		}, {
			name: '3元',
			value: '2'
		}, {
			name: '4元',
			value: '3'
		}, {
			name: '5元',
			value: '4'
		}, {
			name: '6元',
			value: '5'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data4 = [
		[{
			name: '橘子',
			value: '橘子',
			children: [{
				name: '1个',
				value: '0',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '2个',
				value: '1',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '3个',
				value: '2',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '4个',
				value: '3',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '5个',
				value: '4',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '香蕉',
			value: '香蕉',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '苹果',
			value: '苹果',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '梨子',
			value: '梨子',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '桃子',
			value: '桃子',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '西瓜',
			value: '西瓜',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	onLoad((e : OnLoadOptions) => {
		title = e['title'] ?? ''
		
		setTimeout(function() {
			isOk.value = true
		}, 100);
	})
	
	function change1(e : UXPickerEvent) {
		value1.value = e.label.join('-')
	}
	
	function change2(e : UXPickerEvent) {
		value2.value = e.label.join('_')
	}

	function change3(e : UXPickerEvent) {
		value3.value = e.label.join(':')
	}
	
	function change4(e : UXPickerEvent) {
		value4.value = e.label.join(' ')
	}
	
	function change5(e : UXPickerEvent) {
		value5.value = e.label.join('/')
	}
	
	function change6(e : UXPickerEvent) {
		value6.value = e.label.join('/')
	}
	
	function change7(e : UXPickerEvent) {
		value7.value = e.label.join('/')
	}
	
</script>
<script setup>
	import { UXPickerData, UXPickerEvent } from '@/uni_modules/ux-frame/libs/types/types.uts'
	
	let title = ''
	const isOk = ref(false)
	const value1 = ref('')
	const value2 = ref('')
	const value3 = ref('')
	const value4 = ref('')
	const value5 = ref('')
	const value6 = ref('')
	const value7 = ref('')
	
	const data1 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data2 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[],
		[{
			name: '1个',
			value: '0'
		}, {
			name: '2个',
			value: '1'
		}, {
			name: '3个',
			value: '2'
		}, {
			name: '4个',
			value: '3'
		}, {
			name: '5个',
			value: '4'
		}, {
			name: '6个',
			value: '5'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data3 = [
		[{
			name: '橘子',
			value: '橘子'
		}, {
			name: '香蕉',
			value: '香蕉'
		}, {
			name: '苹果',
			value: '苹果'
		}, {
			name: '梨子',
			value: '梨子'
		}, {
			name: '桃子',
			value: '桃子'
		}, {
			name: '西瓜',
			value: '西瓜'
		}] as UXPickerData[],
		[{
			name: '1个',
			value: '0'
		}, {
			name: '2个',
			value: '1'
		}, {
			name: '3个',
			value: '2'
		}, {
			name: '4个',
			value: '3'
		}, {
			name: '5个',
			value: '4'
		}, {
			name: '6个',
			value: '5'
		}] as UXPickerData[],
		[{
			name: '1元',
			value: '0'
		}, {
			name: '2元',
			value: '1'
		}, {
			name: '3元',
			value: '2'
		}, {
			name: '4元',
			value: '3'
		}, {
			name: '5元',
			value: '4'
		}, {
			name: '6元',
			value: '5'
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	const data4 = [
		[{
			name: '橘子',
			value: '橘子',
			children: [{
				name: '1个',
				value: '0',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '2个',
				value: '1',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '3个',
				value: '2',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '4个',
				value: '3',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '5个',
				value: '4',
				children: [{
					name: '1元',
					value: '0'
				}, {
					name: '2元',
					value: '1'
				}, {
					name: '3元',
					value: '2'
				}, {
					name: '4元',
					value: '3'
				}, {
					name: '5元',
					value: '4'
				}, {
					name: '6元',
					value: '5'
				}] as UXPickerData[]
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '香蕉',
			value: '香蕉',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '苹果',
			value: '苹果',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '梨子',
			value: '梨子',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '桃子',
			value: '桃子',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}, {
			name: '西瓜',
			value: '西瓜',
			children: [{
				name: '1个',
				value: '0'
			}, {
				name: '2个',
				value: '1'
			}, {
				name: '3个',
				value: '2'
			}, {
				name: '4个',
				value: '3'
			}, {
				name: '5个',
				value: '4'
			}, {
				name: '6个',
				value: '5'
			}] as UXPickerData[]
		}] as UXPickerData[]
	] as UXPickerData[][]
	
	onLoad((e : OnLoadOptions) => {
		title = e['title'] ?? ''
		
		setTimeout(function() {
			isOk.value = true
		}, 100);
	})
	
	function change1(e : UXPickerEvent) {
		value1.value = e.label.join('-')
	}
	
	function change2(e : UXPickerEvent) {
		value2.value = e.label.join('_')
	}

	function change3(e : UXPickerEvent) {
		value3.value = e.label.join(':')
	}
	
	function change4(e : UXPickerEvent) {
		value4.value = e.label.join(' ')
	}
	
	function change5(e : UXPickerEvent) {
		value5.value = e.label.join('/')
	}
	
	function change6(e : UXPickerEvent) {
		value6.value = e.label.join('/')
	}
	
	function change7(e : UXPickerEvent) {
		value7.value = e.label.join('/')
	}
	
</script>
css
<style lang="scss">
	
</style>
<style lang="scss">
	
</style>