# mx-picker 选择器
提供多个选项集合供用户选择,支持单列选择和多列级联,通常与 弹出层 组件配合使用。
# 引入
在app.json或index.json中引入组件,详细介绍见快速上手
"usingComponents": {
"mx-picker": "/miniprogram_npm/m-ui/mx-picker/index"
}
# 小程序码
可使用微信扫码查看小程序码
#
# 代码演示
# 基本用法
<mx-picker
bind:confirm="toggleActionSheet"
bind:cancel="toggleActionSheet"
bind:close="toggleActionSheet"
description="请选择城市"
show="{{ show }}"
columns="{{ column }}"
bind:change="onChange"
/>
Page({
data: {
show: false,
column: ['北京', '上海', '深圳', '广州', '佛山', '杭州'],
},
toggletype(type) {
console.log(type)
this.setData({
[type]: !this.data[type],
})
},
toggleActionSheet() {
this.toggletype('show')
},
onChange(event) {
const { value } = event.detail
this.setDta({
value1: value,
})
},
});
# 默认选中项
单列选择器可以直接通过default-index属性设置初始选中项的索引值。
<mx-picker
bind:confirm="toggleActionSheet"
bind:cancel="toggleActionSheet"
bind:close="toggleActionSheet"
description="请选择城市"
default-index="{{ 2 }}"
show="{{ show }}"
columns="{{ column }}"
bind:change="onChange"
/>
# 展示顶部栏描述,以及选中栏描述
通过 description 设置顶部描述,通过select-description设置选中栏描述
<mx-picker
bind:confirm="toggleActionSheet2"
bind:cancel="toggleActionSheet2"
bind:close="toggleActionSheet2"
description="设备预计在今天上午 13:00 关机"
select-description="后关机"
default-index="{{ 2 }}"
show="{{ show }}"
columns="{{ column }}"
bind:change="onChange"
/>
# 多列联动
设置description属性后,会在选项上方显示描述信息。
<mx-picker
bind:confirm="toggleActionSheet"
bind:cancel="toggleActionSheet"
bind:close="toggleActionSheet"
description="请选择城市"
default-index="{{ 2 }}"
show="{{ show }}"
columns="{{ column }}"
bind:change="onChange"
/>
Page({
data: {
show: false,
column: [
{
values: ['广东', '浙江', '福建'],
className: 'column1',
},
{
values: ['深圳', '广州', '佛山', '杭州', '宁波', '温州', '嘉兴', '湖州'],
className: 'column2',
defaultIndex: 2,
},
{
values: ['南山', '福田', '罗湖', '龙岗', '宝安'],
className: 'column3',
defaultIndex: 3,
},,
},
toggletype(type) {
console.log(type)
this.setData({
[type]: !this.data[type],
})
},
toggleActionSheet() {
this.toggletype('show')
},
onChange(event) {
const { value } = event.detail
this.setDta({
value1: value,
})
},
});
# 禁用选项
选项可以为对象结构,通过设置 disabled 来禁用该选项。
<mx-picker
bind:confirm="toggleActionSheet"
bind:cancel="toggleActionSheet"
bind:close="toggleActionSheet"
description="请选择城市"
show="{{ show }}"
columns="{{ column }}"
bind:change="onChange"
/>
Page({
data: {
show: false,
column:: [
{ text: '北京', disabled: true },
{ text: '上海' },
{ text: '深圳' },
{ text: '广州', disabled: true },
{ text: '佛山' },
],
},
toggletype(type) {
console.log(type)
this.setData({
[type]: !this.data[type],
})
},
toggleActionSheet() {
this.toggletype('show')
},
onChange(event) {
const { value } = event.detail
this.setDta({
value1: value,
})
},
});
# 默认选中项
当 Picker 数据是通过异步获取时,可以通过 loading 属性显示加载提示。
<mx-picker
bind:confirm="toggleActionSheet"
bind:cancel="toggleActionSheet"
bind:close="toggleActionSheet"
description="请选择城市"
default-index="{{ 2 }}"
show="{{ show }}"
loading
columns="{{ column }}"
bind:change="onChange"
/>
# API
# Props
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
show | 是否显示动作面板 | boolean | false |
z-index | z-index 层级 | string、 number | 100 |
description | 选项上方的描述信息 | string | - |
columns | 对象数组,配置每一列显示的数据 | Array | [] |
loading | 是否显示加载状态 | boolean | false |
value-key | 选项对象中,文字对应的 key | string | text |
item-height | 选项高度 | number | 44 |
confirm-button-text | 确认按钮文字 | string | 确认 |
cancel-button-text | 取消按钮文字 | string | 取消 |
visible-item-count | 可见的选项个数 | number | 6 |
default-index | 单列选择器的默认选中项索引, | ||
多列选择器请参考下方的 Columns 配置 | number | 0 | |
select-description | 选中项的描述信息 | string | - |
# Events
Picker 组件的事件会根据 columns 是单列或多列返回不同的参数。
事件名 | 说明 | 参数 |
---|---|---|
bind:confirm | 点击确定按钮时触发 | 单列:选中值,选中值对应的索引,多列:所有列选中值,所有列选中值对应的索引 |
bind:close | 关闭时触发 | - |
bind:cancel | 取消按钮点击时触发 | 单列:选中值,选中值对应的索引,多列:所有列选中值,所有列选中值对应的索引 |
bind:change | 选项改变时触发 | 单列:Picker 实例,选中值,选中值对应的索引,多列:Picker 实例,所有列选中值,当前列对应的索引 |
# Columns 数据结构
当传入多列数据时,columns为一个对象数组,数组中的每一个对象配置每一列,每一列有以下key。
Keys | 说明 |
---|---|
values | 列中对应的备选值 |
defaultIndex | 初始选中项的索引,默认为 0 |
# 外部样式类
名称 | 说明 |
---|---|
custom-class | 根节点样式类 |
active-class | 选中项样式类 |
column-class | 列样式类 |
# 方法
通过 selectComponent 可以获取到 picker 实例并调用实例方法。
方法名 | 参数 | 返回值 | 介绍 |
---|---|---|---|
getValues | - | values | 获取所有列选中的值 |
setValues | values | - | 设置所有列选中的值 |
getIndexes | - | indexes | 获取所有列选中值对应的索引 |
setIndexes | indexes | - | 设置所有列选中值对应的索引 |
getColumnValue | columnIndex | value | 获取对应列选中的值 |
setColumnValue | columnIndex, value | - | 设置对应列选中的值 |
getColumnIndex | columnIndex | optionIndex | 获取对应列选中项的索引 |
setColumnIndex | indecolumnIndex, optionIndexxes | - | 设置对应列选中项的索引 |
getColumnValues | columnIndex | values | 获取对应列中所有选项 |
setColumnValues | columnIndex, values | - | 设置对应列中所有选项 |