智能客服
你问我答,随时在线为你解决问题
滚动选择器。选择器包括一个或多个不同值的可滚动列表。
起始版本: 1.0.0
属性:
| 名称 | 类型 | 默认值 | 必填 | 描述 |
|---|---|---|---|---|
| mode | string | selector | 否 | 选择器类型。 - selector:普通选择器。 - multiSelector:多列选择器。 - time:时间选择器。 - date:日期选择器。 - region:省市区选择器。 |
| disabled | boolean | false | 否 | 是否禁用。 |
| bindcancel | eventhandle | - | 否 | 取消选择时触发。 |
除了上述通用的属性,对于不同的mode,picker会有不同的属性。
当mode = selector时,表示普通选择器。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| range | Array<string> | Array<Object> | [] | 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 = multiSelector时,表示多列选择器。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| range | Array<string> | Array<Object> | [] | mode为selector或multiSelector时,range有效。 |
| range-key | string | - | 当range是一个Object Array时,通过range-key来指定Object中key的值作为选择器显示内容。 |
| value | Array<number> | [] | 表示选择了range中的第几个(下标从0开始)。 |
| bindchange | eventhandle | - | value改变时触发change事件,event.detail = {value}。 |
| bindcolumnchange | eventhandle | - | 列改变时触发。 |
当mode = time时,表示时间选择器。
| 名称 | 类型 | 描述 |
|---|---|---|
| value | string | 表示选中的时间,格式为"hh:mm"。 |
| start | string | 表示有效时间范围的开始,字符串格式为"hh:mm"。 |
| end | string | 表示有效时间范围的结束,字符串格式为"hh:mm"。 |
| bindchange | eventhandle | value改变时触发change事件。 |
当mode = date时,表示日期选择器。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| value | string | 当天 | 表示选中的日期,格式为"YYYY-MM-DD"。 |
| start | string | - | 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD"。 |
| end | string | - | 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD"。 |
| bindchange | eventhandle | - | value改变时触发change事件,event.detail = {value}。 |
当mode = region时,表示省市区选择器。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| value | Array<string> | [] | 表示选中的省市区,默认选中每一列的第一个值。 |
| bindchange | eventhandle | - | value改变时触发change事件,event.detail = {value, code},其中字段code是统计用区划代码。 |
示例:
hxml文件:
- <view class="page-body">
- <view class="page-section">
- <view class="contentTitle">普通选择器</view>
- <view class="contentBody">
- <view class="contentKey">当前选择</view>
- <view class="contentVal">
- <picker
- bindchange="bindPickerChange"
- value="{{index}}"
- range="{{array}}">
- <view>{{array[index]}}</view>
- </picker>
- </view>
- </view>
- <view class="contentTitle">时间选择器</view>
- <view class="contentBody">
- <view class="contentKey">当前选择</view>
- <view class="contentVal">
- <picker
- mode="time"
- value="{{time}}"
- start="09:01"
- end="21:01"
- bindchange="bindTimeChange">
- <view>{{time}}</view>
- </picker>
- </view>
- </view>
- <view class="page-body">
- <view class="page-section">
- <view class="page-section-spacing">
- <picker mode="multiSelector"
- value="{{multiIndex}}"
- range="{{multiArray}}"
- bindchange="bindPickerChange"
- bindcolumnchange="bindColumnChange">
- <view class="picker">多列选择器</view>
- </picker>
- </view>
- </view>
- </view>
- </view>
- </view>
js文件:
- Page({
- data: {
- array: ['皮卡丘', '小火龙', '杰尼龟', '火恐龙'],
- index: 0,
- time: '12:01',
- multiIndex: [0, 0],
- // 多列选择器:
- multiArray: [['音频', '视频'], ['酷狗', '音乐']], // 二维数组,长度是多少是几列
- },
- bindPickerChange(event) {
- // event.detail内容举例为:{"value":""}
- console.info('picker组件的选择发生改变,携带值为', event.detail);
- },
- bindTimeChange(event) {
- // event.detail.value内容举例为:**:**
- console.info('picker组件mode为time时,选择发生改变,携带值为:', event.detail.value);
- this.setData({
- time: event.detail.value
- });
- },
- bindColumnChange(event) {
- // event.detail内容举例为:{"value":[],"column":""}
- console.info('picker组件列改变时触发,携带值为:', event.detail);
- }
- });