2018-12-14 14:54:56 +08:00
2018-12-14 14:54:30 +08:00
2018-12-12 14:52:37 +08:00
2018-12-14 14:54:56 +08:00
2018-12-12 14:52:37 +08:00
2018-12-12 20:43:22 +08:00
2018-12-12 20:43:22 +08:00
2018-12-12 14:52:37 +08:00
2018-12-12 14:52:37 +08:00
2018-12-12 14:52:37 +08:00
2018-12-12 14:52:37 +08:00
2018-12-14 11:48:55 +08:00

miniprogram-picker

简介

  • 微信小程序的Picker组件只是半成品组件,在启用多级联动时需要监听bindcolumnchange事件,来手动更改rangevalue的值从而完成Picker的联动变化比较麻烦不利于在不同的业务逻辑中的复用。
  • 本组件为了解决以上痛点对微信小程序Picker组件进行了第二次封装。开发者只需要提供固定数据结构的sourceData,在进行一些必要配置,本组件就可以自动帮助开发者处理联动逻辑。

API

属性

属性 说明 类型 默认值 是否必填
sourceData 源数组sourceData有几维Picker就可以有几阶。格式必须为数组和对象的集合参考示例 Array [] true
steps Picker的阶数 Number 1 true
shownFieldName 展示数据的字段名称 String 'name' false
subsetFieldName 子节点的字段名称值为Picker下一阶的数组 String 'subset' false
otherNeedFieldsName 其他需要返回的字段,开发者可以根据需求自定义 Array [] false
defaultIndex 默认选中项的下标数组优先于defaultValue Array [] false
defaultValue 默认选中项的值数组此属性启用时defaultValueUniqueField为必填项 Array [] false
defaultValueUniqueField 默认选中项的值数组的唯一字段,用来和源数组进行比对 String '' -
autoSelect 初始化时是否需要自动调用bindchange事件返回结果给开发者 Boolean false false
initColumnSelectedIndex 选择了第n列后是否将大于n的列的选择值自动初始化为0 Boolean false false

方法

方法 说明 类型 返回值
bindchange 用户点击确认后的change事件event.detail = {selectedIndex, selectedArray} EventHandle selectedIndexPicker选择项的索引数组 multiArrayPicker选择项的值数组

规则

  • sourceData为源数组,是一个数组对象结构的集合,sourceData有几维Picker就可以有几阶。
  • steps你需要明确指定Picker的阶数比如三级联动则设置steps: 3
  • 需要注意的是,比如steps设置了3,那么sourceData务必要满足这个阶数。
  • initColumnSelectedIndex属性启用后,开发者调试工具上会有失效情况,但是真机目前没有发现问题,所以是否开启请开发者自行决定。

示例

<comp
  sourceData="{{sourceData_2}}"
  steps="{{2}}"
  shownFieldName="{{'name'}}"
  subsetFieldName="{{'nextLevel'}}"
  otherNeedFieldsName="{{['code']}}"
  defaultValue="{{[{code: '0110'}, {code: '011002'}]}}"
  defaultValueUniqueField="{{'code'}}"
  autoSelect="{{true}}"
  initColumnSelectedIndex
  bindchange="pickerChange_2">
    <view class="picker">
      当前选择:<text wx:for="{{result_2}}" wx:key="index">{{item['name']}}</text>
    </view>
</comp>
Page({
  /**
   * 页面的初始数据
   */
  data: {
    result_2: [],
    sourceData_2: [
      { name: '河北', code: '0311', nextLevel: [{ name: '石家庄', code: '031101' }, { name: '保定', code: '031102' }]},
      { name: '北京', code: '0110', nextLevel: [{ name: '朝阳', code: '011001' }, { name: '海淀', code: '011002' }]},
    ]
  },
  /**
   * Picker的确认回调函数
   *
   * @param {Object} e.detail.selectedIndex 用户选择的数据在数组中所在的下标
   * @param {Object} e.detail.selectedArray 用户选择的数据
   */
  pickerChange_2(e) {
    const { selectedIndex, selectedArray } = e.detail
    console.log('多级联动结果:', selectedIndex, selectedArray)
    this.setData({
      result_2: selectedArray
    })
  }
})
Description
No description provided
Readme MIT 394 KiB
Languages
JavaScript 100%