# 9.13 选择器(Midea Picker)

组件定义:该组件提供普通 picker、日期 picker 和联动 picker。

# 页面效果

# 示例

<template>
    <div class="wrapper row-c">
        <midea-picker
            class="picker"
            ref="single"
            :config="pickerConfig"
            @mideaPickerChange="onMideaPickerChange"
        ></midea-picker>
    </div>
</template>
 
<style>
.row-c {
    flex-direction: row;
    align-items: center;
    justify-content: center;
}
.wrapper {
    /*width: 750px;*/
    flex-direction: column;
    justify-content: center;
}
 .button {
    font-size: 60px;
    width: 450px;
    text-align: center;
    margin-top: 30px;
    margin-left: 150px;
    padding-top: 20px;
    padding-bottom: 20px;
    border-width: 2px;
    border-style: solid;
    color: #666666;
    border-color: #DDDDDD;
    background-color: #F5F5F5
  }
.picker {
    width: 686px;
    height: 440px;
}
</style>
 
<script>
const navigator = weex.requireModule('navigator')
 
export default {
    data() {
        return {
          delayTime: 0,
          pickerCF:{},
          pickerConfig: {
                loop: true,
                itemMaps: [],
                textColor: '#300001', // 选中的字体颜色
                backgroundColor: '#666666', //picker背景色
                dividerColor: '#CDCDCD', // 分割线颜色
                type: '0', // 0:普通 picker,1:日期 picker,2:联动 picker
                value: '2021-03-01', // 如果是时间/日期picker类则传值,格式:"2021-03-01",普通类型picker无值
                selectedRowBgColor:"#00ff00",//当前选中行的背景色。(8.13.0)
                wheelList: [
                    {
                        index: 0,
                        isLoop: true,
                        selectedTextSize: 20,
                        label: '小时', // 单位名字
                        labelTextColor: '#121212', //单位颜色
                        labelTextSize: '14', //单位字体大小
                        itemList: Array.apply(null, { length: 24 }).map((v, k) => {
                            return {
                                id: k,
                                name: k < 10 ? '0' + k : '' + k,
                                pid: 0
                            }
                        })
                    },
                    {
                        index: 0,
                        isLoop: true,
                        selectedTextSize: 20,
                        label: '分', // 单位名字
                        labelTextColor: '#121212', //单位颜色
                        labelTextSize: '14', //单位字体大小
                        itemList: Array.apply(null, { length: 60 }).map((v, k) => {
                            return {
                                id: k,
                                name: k < 10 ? '0' + k : '' + k,
                                pid: 0
                            }
                        })
                    },
                    {
                        index: 0,
                        isLoop: true,
                        selectedTextSize: 20,
                        label: '秒', // 单位名字
                        labelTextColor: '#121212', //单位颜色
                        labelTextSize: '14', //单位字体大小
                        itemList: Array.apply(null, { length: 60 }).map((v, k) => {
                            return {
                                id: k,
                                name: k < 10 ? '0' + k : '' + k,
                                pid: 0
                            }
                        })
                    }
                ]
            },
        }
    },
 
    methods: {
      pickCity(){
        this.pickerCF = this.pickerConfig;
        this.$refs.single.style.background = "#456234";
      },
      onMideaPickerChange(event) {
          console.log(JSON.stringify(event))
          if (event.result === 'success') {
              let data = event.data
              data = typeof data === 'string' ? JSON.parse(data) : data
              this.delayTime = parseInt(data[0].name) * 3600 + parseInt(data[1].name) * 60 + parseInt(data[2].name)
          }
      },
    },
     
    created() {
    }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

# Attributes

提供给前端多个属性控制,包括字体颜色,背景颜色,单位颜色,选中值,滚动数据等,支持单列和多列样式的展示。

<midea-picker>通过传入 config 值来存储所有属性值。示例中的 pickerConfig 是页面变量,实际组件属性名为 config。

Prop Type Required Default Description
config Object Y - 选择器配置,以下属性均置于此对象中

普通滚轮默认配置为 textColor: '#000000'、backgroundColor: '#FFFFFF'、itemHeight: '36'。

Prop Type Description
textColor String 选中的字体颜色
backgroundColor String Picker背景色
dividerColor String 分割线颜色
type String 0:普通 picker,1:日期 picker,2:联动 picker
value String 如果是日期 picker 类型则传值,格式:"2021-03-01",其他类型 picker 无值
min String 如果是日期 picker 类型则传值,格式:"1900-01-01",其他类型 picker 无值
max String 如果是日期 picker 类型则传值,格式:"1900-01-01",其他类型 picker 无值
itemHeight String 每一列的高度
dividerLeftMargin Number 分割线左边距(安卓独有)
dividerRightMargin Number 分割线右边距(安卓独有)
dividerHeight Number 分割线高度(安卓独有)
itemMaps Array 联动类型有值,其他类型无值(注 1)
wheelList Array 具体配置的数据,可选值注2

# 参数详情:itemMaps(注 1)

Prop Type Description
id Number 主键 id
name String 内容
pId Number 所属父类型 id

# 参数详情:wheelList(注 2)

默认值:index = 0、isLoop = false、labelEdgeType = 'center'、labelTopEdge = 0、labelLeftEdge = 5。

Prop Type Description
index Number 起始滚动的位置,默认位置
isLoop Boolean 是否循环滚动
selectedTextSize Number 选中的字体大小
selectedTextColor String 选中文字颜色
selectedTextAlpha Number 每列选中行文字透明度(范围 0-1)
normalTextSize Number 正常的字体大小
normalTextColor String 未选中的文本颜色
normalTextAlpha Number 其他行文字透明度(范围 0-1)
label String 单位
labelTextColor String 标签颜色
labelTextSize String 单位字体大小
labelEdgeType String top/center/bottom选中单位坐标偏移方向
labelTopEdge Number 选中单位坐标Y轴偏移距离
labelLeftEdge Number 选中单位坐标X轴偏移距离
ruleList Array 每列单位规则(注 3)
itemList Array 具体滚动的每一项注4
backgroundColor String Picker背景色
dividerColor String 分割线颜色
selectedRowBgColor String 当前选中行的背景色

# 参数详情:ruleList(注 3)

Prop Type Description
text String 单位名称
textColor String 单位颜色
min Number 最小值
max Number 最大值

# 参数详情:itemList(注 4)

Prop Type Description
id Number 唯一标识
name String 标识展示的具体文字
pid Number 上一级的 id

# Events

事件名称 说明 回调参数
mideaPickerChange 选择值变化时触发 示例使用 { result, data };result === 'success' 时读取 data,data 可为数组或 JSON 字符串
function onMideaPickerChange(event) {
  if (event.result !== 'success') return
  const selected = typeof event.data === 'string' ? JSON.parse(event.data) : event.data
  // selected 为各列选中项组成的数组,每项包含 id、name 等字段。
  return selected
}
1
2
3
4
5
6