3-9 picker组件

picker

基础库 1.0.0 开始支持,低版本需做兼容处理。

从底部弹起的滚动选择器。

属性 类型 默认值 必填 说明 最低版本
mode string selector 选择器类型 1.0.0
disabled boolean false 是否禁用 1.0.0
bindcancel eventhandle   取消选择时触发 1.9.90

mode 的合法值

说明 最低版本
selector 普通选择器  
multiSelector 多列选择器  
time 时间选择器  
date 日期选择器  
region 省市区选择器  

除了上述通用的属性,对于不同的mode,picker拥有不同的属性。

普通选择器:mode = selector

属性名 类型 默认值 说明 最低版本
range array/object array [] mode 为 selector 或 multiSelector 时,range 有效  
range-key string   当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容  
value number 0 表示选择了 range 中的第几个(下标从 0 开始)  
bindchange eventhandle   value 改变时触发 change 事件,event.detail = {value}  

时间选择器:mode = time

属性名 类型 默认值 说明 最低版本
value string   表示选中的时间,格式为"hh:mm"  
start string   表示有效时间范围的开始,字符串格式为"hh:mm"  
end string   表示有效时间范围的结束,字符串格式为"hh:mm"  
bindchange eventhandle   value 改变时触发 change 事件,event.detail = {value}  

日期选择器:mode = date

属性名 类型 默认值 说明 最低版本
value string 0 表示选中的日期,格式为"YYYY-MM-DD"  
start string   表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"  
end string   表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"  
fields string day 有效值 year,month,day,表示选择器的粒度  
bindchange eventhandle   value 改变时触发 change 事件,event.detail = {value}  

fields 有效值:*

说明
year 选择器粒度为年
month 选择器粒度为月份
day 选择器粒度为天

省市区选择器:mode = region 1.4.0

属性名 类型 默认值 说明 最低版本
value array [] 表示选中的省市区,默认选中每一列的第一个值  
custom-item string   可为每一列的顶部添加一个自定义的项 1.5.0
bindchange eventhandle   value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码  

示例代码

在开发者工具中预览效果



  普通选择器
  
    当前选择:{
    {array[index]}}
  




  多列选择器
  
    
      当前选择:{
    {multiArray[0][multiIndex[0]]}},{
    {multiArray[1][multiIndex[1]]}},{
    {multiArray[2][multiIndex[2]]}}
    
  



  时间选择器
  
    当前选择: {
    {time}}
  



  日期选择器
  
    当前选择: {
    {date}}
  



  省市区选择器
  
    
      当前选择:{
    {region[0]}},{
    {region[1]}},{
    {region[2]}}
    
  
Page({
  data: {
    array: ['美国', '中国', '巴西', '日本'],
    objectArray: [
      {
        id: 0,
        name: '美国'
      },
      {
        id: 1,
        name: '中国'
      },
      {
        id: 2,
        name: '巴西'
      },
      {
        id: 3,
        name: '日本'
      }
    ],
    index: 0,
    multiArray: [['无脊柱动物', '脊柱动物'], ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'], ['猪肉绦虫', '吸血虫']],
    objectMultiArray: [
      [
        {
          id: 0,
          name: '无脊柱动物'
        },
        {
          id: 1,
          name: '脊柱动物'
        }
      ], [
        {
          id: 0,
          name: '扁性动物'
        },
        {
          id: 1,
          name: '线形动物'
        },
        {
          id: 2,
          name: '环节动物'
        },
        {
          id: 3,
          name: '软体动物'
        },
        {
          id: 3,
          name: '节肢动物'
        }
      ], [
        {
          id: 0,
          name: '猪肉绦虫'
        },
        {
          id: 1,
          name: '吸血虫'
        }
      ]
    ],
    multiIndex: [0, 0, 0],
    date: '2016-09-01',
    time: '12:01',
    region: ['广东省', '广州市', '海珠区'],
    customItem: '全部'
  },
  bindPickerChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      index: e.detail.value
    })
  },
  bindMultiPickerChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  },
  bindMultiPickerColumnChange(e) {
    console.log('修改的列为', e.detail.column, ',值为', e.detail.value)
    const data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    }
    data.multiIndex[e.detail.column] = e.detail.value
    switch (e.detail.column) {
      case 0:
        switch (data.multiIndex[0]) {
          case 0:
            data.multiArray[1] = ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物']
            data.multiArray[2] = ['猪肉绦虫', '吸血虫']
            break
          case 1:
            data.multiArray[1] = ['鱼', '两栖动物', '爬行动物']
            data.multiArray[2] = ['鲫鱼', '带鱼']
            break
        }
        data.multiIndex[1] = 0
        data.multiIndex[2] = 0
        break
      case 1:
        switch (data.multiIndex[0]) {
          case 0:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['猪肉绦虫', '吸血虫']
                break
              case 1:
                data.multiArray[2] = ['蛔虫']
                break
              case 2:
                data.multiArray[2] = ['蚂蚁', '蚂蟥']
                break
              case 3:
                data.multiArray[2] = ['河蚌', '蜗牛', '蛞蝓']
                break
              case 4:
                data.multiArray[2] = ['昆虫', '甲壳动物', '蛛形动物', '多足动物']
                break
            }
            break
          case 1:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['鲫鱼', '带鱼']
                break
              case 1:
                data.multiArray[2] = ['青蛙', '娃娃鱼']
                break
              case 2:
                data.multiArray[2] = ['蜥蜴', '龟', '壁虎']
                break
            }
            break
        }
        data.multiIndex[2] = 0
        break
    }
    console.log(data.multiIndex)
    this.setData(data)
  },
  bindDateChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      date: e.detail.value
    })
  },
  bindTimeChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      time: e.detail.value
    })
  },
  bindRegionChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      region: e.detail.value
    })
  }
})

picker-view

基础库 1.0.0 开始支持,低版本需做兼容处理。

嵌入页面的滚动选择器。其中只可放置 picker-view-column组件,其它节点不会显示。

picker可以用于制作自定义的选择器

属性 类型 默认值 必填 说明 最低版本
value Array.   数组中的数字依次表示 picker-view 内的 picker-view-column 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 1.0.0
indicator-style string   设置选择器中间选中框的样式 1.0.0
indicator-class string   设置选择器中间选中框的类名 1.1.0
mask-style string   设置蒙层的样式 1.5.0
mask-class string   设置蒙层的类名 1.5.0
bindchange eventhandle   滚动选择时触发change事件,event.detail = {value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) 1.0.0
bindpickstart eventhandle   当滚动选择开始时候触发事件 2.3.1
bindpickend eventhandle   当滚动选择结束时候触发事件 2.3.1

Bug & Tip

  1. tip: 滚动时在iOS自带振动反馈,可在系统设置 -> 声音与触感 -> 系统触感反馈中关闭

示例代码

在开发者工具中预览效果


  {
    {year}}年{
    {month}}月{
    {day}}日
  
    
      {
    {item}}年
    
    
      {
    {item}}月
    
    
      {
    {item}}日
    
  

const date = new Date()
const years = []
const months = []
const days = []

for (let i = 1990; i <= date.getFullYear(); i++) {
  years.push(i)
}

for (let i = 1; i <= 12; i++) {
  months.push(i)
}

for (let i = 1; i <= 31; i++) {
  days.push(i)
}

Page({
  data: {
    years,
    year: date.getFullYear(),
    months,
    month: 2,
    days,
    day: 2,
    value: [9999, 1, 1],
  },
  bindChange(e) {
    const val = e.detail.value
    this.setData({
      year: this.data.years[val[0]],
      month: this.data.months[val[1]],
      day: this.data.days[val[2]]
    })
  }
})

 

picker-view-column

基础库 1.0.0 开始支持,低版本需做兼容处理。

滚动选择器子项。仅可放置于中,其孩子节点的高度会自动设置成与的选中框的高度一致

你可能感兴趣的:(微信小程序学习日志,微信小程序)