由于官方picker是基于index维护默认选中,在复杂场景显得过于繁琐,另外官方picker在老版本安卓浏览器中无法显示(已提issue修复方案,后面应该会解决),所以就自己重新写了一套picker。 目前还不支持日期时间选择,仅用于替代下拉多列联动的数据选择。 ## 属性/事件列表: | 属性/事件 | 必填 | 默认 | 功能 | | :-----: | :-----: | :-----: | :----- | | pickerList | 是 | [] | picker数据,支持多维,使用`children`存储多维数据 | | pickerKey | 否 | {value: 'value',lable:'label',children: 'children'} | 用于指定用户自定义数据字段名和默认字段名对应关系 | | pickerStyle | 否 | {} | 目前可以自定义按钮样式,列样式,参数格式见: `pickerStyle` | | defaultValue | 否 | [] | 默认值,数组格式,和`pickerList`维数保持一致 | | columnNum | 否 | 0 | 指定列,不传或者为0表示根据数据动态显示列数,最多限制5列 | | itemRotateDeg | 否 | 15 | 每个选项滚动角度,模拟滚轴效果, 注意:该效果目前只支持H5 | | beforeSetColumn | 否 | null | 每次更新列之前调用方法,参数:`columnIndex`,`pickerList`,其中`pickerList`对应当前列数据, 可使用该方法对列数据动态的处理,也可以用于ajax动态获取列数据。注意:如果未设置`columnNum`,只有`beforeSetColumn`返回空值或者超出5列才会停止渲染新的列 | | speedUpRatio | 否 | 1 | 增加了滑动惯性特性,该参数可以设置惯性的速率比例。默认1为预设速率,设置为0则没有惯性。 | | @confirm | 否 | null | 点击确定后触发,参数:`picked` | | @change | 否 | null | 列选项更新的时候触发,参数:`columnIndex`, `columnPicked` | | @cancel | 否 | null | 点击取消或者蒙版触发 | ### pickerList: ``` // 联动多列 [ { label: '选项1', value: 1, children: [ { label: '选项11', value: 11, children: [ {label: '选项111', value: 111}, ] }, ] }, ] // 非联动多列 [ [ {label: '选项1', value: 1}, {label: '选项2', value: 2}, {label: '选项3', value: 3}, ], [ {label: '选项1', value: 1}, {label: '选项2', value: 2}, {label: '选项3', value: 3}, ], ] ``` ### pickerStyle: ``` { cancel: { color: '#999', }, confirm: { color: '#1CABEB', }, column: [ {flex: 1}, {flex: 1}, {flex: 3}, ] } ``` ### picked: ``` { index: 1 indexes: [3, 2, 1] label: "1953年2分" labels: ["3版", "2分", "1953年2分"] value: 116 values: [4, 115, 116] } ``` ### columnPicked: ``` { index: 1 label: "1953年2分" value: 116 } ``` ## Demo: 引入picker不要uni-app自带picker冲突,例:MyPicker. #### 单列: ``` ``` #### 固定多列: ``` ``` #### 完整参数演示: ``` ``` #### 非固定列: ``` ``` #### 完整Demo ``` ```