Skip to content
On this page

组件库文档 tmui.design

选择器 Picker

Picker 选择器是一个提供基础单列数据选择以及可扩展为多级联动的选择器组件
Picker与Picker-view两个组件属性相同。除了没有show属性。请自行按照Picker方法使用。


🌶️ 选择器 Picker 示例

查看模拟效果
示例模板
vue
<template>
	<tm-app>
		<tm-sheet>
			<tm-text :font-size="24" _class="text-weight-b" label="基础示例,更多见文档"></tm-text>
			<tm-divider></tm-divider>
			<tm-picker-view map-key="word" :columns="citydate"></tm-picker-view>
		</tm-sheet>
		<tm-cell @click="showdate = true" title="请选择水果种类" :right-text="dateStr || '请选择'"></tm-cell>
		<tm-cell @click="showdateq = true" title="这里联动上边" :right-text="dateStr2 || '请选择'"></tm-cell>
		<tm-picker
			:defaultValue="pickydata"
			@confirm="pickok"
			v-model:show="showdate"
			:columns="citydate3"
			v-model="pickydata"
			v-model:model-str="dateStr"
		>
		</tm-picker>

		<tm-picker v-model:show="showdateq" :columns="citydate3" v-model="pickydata2" v-model:model-str="dateStr2"> </tm-picker>
		<tm-sheet>
			<tm-text :font-size="24" _class="text-weight-b" label="多级联动,更多属性请自行看文档"></tm-text>
			<tm-divider></tm-divider>
			<tm-picker-view :columns="citydate2"></tm-picker-view>
		</tm-sheet>
		<view class="py-32"></view>
	</tm-app>
</template>
<script lang="ts" setup>
import { ref, computed, nextTick } from 'vue'
import { onShow, onLoad } from '@dcloudio/uni-app'
import tmApp from '@/tmui/components/tm-app/tm-app.vue'
import tmSheet from '@/tmui/components/tm-sheet/tm-sheet.vue'
import tmText from '@/tmui/components/tm-text/tm-text.vue'
import tmIcon from '@/tmui/components/tm-icon/tm-icon.vue'
import tmDivider from '@/tmui/components/tm-divider/tm-divider.vue'
import tmPickerView from '@/tmui/components/tm-picker-view/tm-picker-view.vue'
import tmPicker from '@/tmui/components/tm-picker/tm-picker.vue'
import tmCell from '@/tmui/components/tm-cell/tm-cell.vue'
const dateStr = ref('')
const dateStr2 = ref('')
const pickydata = ref([1, 1])
const pickydata2 = ref([])
const citydate = ref([
	{ word: '苹果', id: 0 },
	{ word: '香蕉', id: 1 },
	{ word: '其它水果', id: 2 },
	{ word: '越南水果', id: 4 }
])
const citydate2 = ref([
	{
		text: '苹果',
		id: 0,
		children: [
			{ text: '香蕉', id: 10 },
			{ text: '香蕉2', id: 122 }
		]
	},
	{
		text: '子级',
		id: 1,
		children: [
			{ text: '香蕉', id: 10 },
			{ text: '香蕉2', id: 122 }
		]
	},
	{
		text: '越南水果',
		id: 2,
		children: [
			{ text: '苹果2222', id: 10 },
			{ text: '香蕉', id: 12 }
		]
	}
])
const citydate3 = ref([
	{
		text: '苹果',
		id: 0,
		children: [
			{ text: '香蕉', id: 10 },
			{ text: '香蕉2', id: 122 }
		]
	},
	{
		text: '苹果',
		id: 1,
		children: [
			{ text: '香蕉', id: 10 },
			{ text: '香蕉2', id: 122 }
		]
	},
	{
		text: '越南水果',
		id: 3,
		children: [
			{ text: '苹果2222', id: 10 },
			{ text: '香蕉', id: 12 }
		]
	}
])
const showdate = ref(false)
const showdateq = ref(false)

function pickok() {
	nextTick(() => {
		pickydata2.value = []
	})
}
</script>

🌶️ 兼容性

APP-VUEAPP-NVUE小程序WEB/H5VUE3/TS
✔️✔️✔️✔️✔️

🌱 参数

本组件含有公共属性 公共属性

参数名类型默认值描述
modelValue - v-modelNumber , String-每一列选中的索引值
modelStrString-这里是单向输出显示的value值,而不是modelValue的index索引值。 这里主要是为了方便表单上页面的显示。如果真要保存到数据库,你应该保存modelValue的值。
defaultValueString""默认选中的索引值
selectedModelStringindex赋值和选值方式,共三种,分别为name:名称模式赋值和选择,id:id模式赋值和选择,index:索引模式赋值和选择
columnsArrray```[]``数据
dataKeyStringtext[3.0.89后建议不使用,请使用mapKey]当columns项目中的data数据为对象时的key取值字段
mapKeyStringtext与dataKey作用相同,从3.0.89开始启用,建议放弃使用dataKey字段。但会兼容dataKey,两者都有效,但微信中只有本字段 有效。
showBooleanfalse控制选择器的显示与隐藏
colorStringprimary选择器的颜色,主要体现在按钮颜色上
btnRoundNumber3选择器按钮的圆角值
roundNumber12选择器的圆角值
heightNumber700选择器高度
linearString-选择器确认选择按钮的渐变背景方向,可选值有:left:右->左,right:左->右。top:下->上,bottom:上->下
linearDeepStringlight选择器确认选择按钮的渐变背景颜色深浅,可选值有:light,dark,accent亮系渐变和深色渐变
beforeChangeFunction,Boolean-当前改变index项时,改变时执行的函数。如果返回false,将会阻止本次改变,可以是Promise,提供了即将改变的数据和将要改变到目标的数据,结构 为 from:{itemindex,levelIndex,data},to:{itemindex,levelIndex,data}
disabledBooleanfalse当使用插槽占位触发显示时,打开禁用可阻止弹层显示,适合在表单内部使用
zIndexNumber, String999弹层的层级
durationNumber300弹出动画的时间(毫秒)

🌹 事件

事件名参数返回数据描述
confirm-modelValue值点击确认选择按钮后返回modelValue值
cancel--点击取消按钮的触发事件
open--选择器弹出层打开的触发事件
close--选择器弹出层关闭的触发事件

🌽 slot插槽

默认default,可触发弹层的插槽占位内容,比如在里面布局按钮,输入框,点击这块内容可以直接显示弹层。

🥗 ref方法

😡 贡献者

Wicos