由于官方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
```
单列picker选择结果:
3列联动选择结果:
多列联动第{{demos.multiColumns.columnPickedIndex + 1}}列更新:
完整自定义参数联动选择结果:
完整自定义参数联动第{{demos.customMultiColumns.columnPickedIndex + 1}}列更新:
非固定列联动选择结果:
多列非联动选择结果:
```