# 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 - 设置对应列中所有选项