1# picker-view
2
3嵌入页面的滑动选择器。
4
5> **说明:**
6>
7> 该组件从从API version 4 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 子组件
11
12不支持。
13
14
15## 属性
16
17| 名称 | 类型 | 默认值 | 必填 | 描述 |
18| -------- | -------- | -------- | -------- | -------- |
19| type | string | text | 否 | 设置滑动选择器的类型,该属性不支持动态修改,可选项有:<br/>-&nbsp;text:文本选择器。<br/>-&nbsp;time:时间选择器。 |
20| id | string | - | 否 | 组件的唯一标识。 |
21| style | string | - | 否 | 组件的样式声明。 |
22| class | string | - | 否 | 组件的样式类,用于引用样式表。 |
23| ref | string | - | 否 | 用来指定指向子元素的引用信息,该引用将注册到父组件的$refs&nbsp;属性对象上。 |
24
25文本选择器:type=text
26
27| 名称 | 类型 | 默认值 | 必填 | 描述 |
28| -------- | -------- | -------- | -------- | -------- |
29| range | Array | - | 否 | 设置文本选择器的取值范围。<br/>使用时需要使用数据绑定的方式,如range&nbsp;=&nbsp;{{data}},js中声明相应变量:data:["15",&nbsp;"20",&nbsp;"25"]。 |
30| selected | string | 0 | 否 | 设置文本选择器的默认选择值,该值需要为range的索引。 |
31
32时间选择器:type=time
33
34| 名称 | 类型 | 默认值 | 必填 | 描述 |
35| -------- | -------- | -------- | -------- | -------- |
36| selected | string | 00:00 | 否 | 设置时间选择器的默认取值,格式为&nbsp;HH:mm;<br/> |
37
38
39## 事件
40
41type=text:
42
43| 名称 | 参数 | 描述 |
44| -------- | -------- | -------- |
45| change | {&nbsp;newValue:&nbsp;newValue,&nbsp;newSelected:&nbsp;newSelected&nbsp;} | 文本选择器选定值后触发该事件。 |
46
47type=time:
48
49| 名称 | 参数 | 描述 |
50| -------- | -------- | -------- |
51| change | {&nbsp;hour:&nbsp;hour,&nbsp;minute:&nbsp;minute} | 时间选择器选定值后触发该事件。<br/> |
52
53
54## 样式
55
56| 名称 | 类型 | 默认值 | 必填 | 描述 |
57| -------- | -------- | -------- | -------- | -------- |
58| color | &lt;color&gt; | \#808080<br/> | 否 | 候选项字体颜色。 |
59| font-size | &lt;length&gt; | 30px<br/> | 否 | 候选项字体尺寸,类型length,单位px。 |
60| selected-color | &lt;color&gt; | \#ffffff<br/> | 否 | 选中项字体颜色。 |
61| selected-font-size | &lt;length&gt; | 38px<br/> | 否 | 选中项字体尺寸,类型length,单位px。 |
62| selected-font-family | string | HYQiHei-65S | 否 | 选中项字体类型。 |
63| font-family | string | <br/>HYQiHei-65S | 否 | 选项字体类型。 |
64| width | &lt;length&gt;&nbsp;\|&nbsp;&lt;percentage&gt;<sup>5+</sup> | - | 否 | 设置组件自身的宽度。<br/><br/>未设置时组件宽度默认为0。 |
65| height | &lt;length&gt;&nbsp;\|&nbsp;&lt;percentage&gt;<sup>5+</sup> | - | 否 | 设置组件自身的高度。<br/><br/>未设置时组件高度默认为0。 |
66| padding | &lt;length&gt; | 0 | 否 | 使用简写属性设置所有的内边距属性。<br/>&nbsp;&nbsp;该属性可以有1到4个值:<br/>-&nbsp;指定一个值时,该值指定四个边的内边距。<br/>-&nbsp;指定两个值时,第一个值指定上下两边的内边距,第二个指定左右两边的内边距。<br/>-&nbsp;指定三个值时,第一个指定上边的内边距,第二个指定左右两边的内边距,第三个指定下边的内边距。<br/>-&nbsp;指定四个值时分别为上、右、下、左边的内边距(顺时针顺序)。 |
67| padding-[left\|top\|right\|bottom] | &lt;length&gt; | 0 | 否 | 设置左、上、右、下内边距属性。 |
68| margin | &lt;length&gt;&nbsp;\|&nbsp;&lt;percentage&gt;<sup>5+</sup> | 0 | 否 | 使用简写属性设置所有的外边距属性,该属性可以有1到4个值。<br/>-&nbsp;只有一个值时,这个值会被指定给全部的四个边。<br/>-&nbsp;两个值时,第一个值被匹配给上和下,第二个值被匹配给左和右。<br/>-&nbsp;三个值时,第一个值被匹配给上,&nbsp;第二个值被匹配给左和右,第三个值被匹配给下。<br/>-&nbsp;四个值时,会依次按上、右、下、左的顺序匹配&nbsp;(即顺时针顺序)。 |
69| margin-[left\|top\|right\|bottom] | &lt;length&gt;&nbsp;\|&nbsp;&lt;percentage&gt;<sup>5+</sup> | 0 | 否 | 设置左、上、右、下外边距属性。 |
70| border-width | &lt;length&gt; | 0 | 否 | 使用简写属性设置元素的所有边框宽度。 |
71| border-color | &lt;color&gt; | black | 否 | 使用简写属性设置元素的所有边框颜色。 |
72| border-radius | &lt;length&gt; | - | 否 | border-radius属性是设置元素的外边框圆角半径。 |
73| background-color | &lt;color&gt; | - | 否 | 设置背景颜色。 |
74| display | string | flex | 否 | 确定一个元素所产生的框的类型,可选值为:<br/>-&nbsp;flex:弹性布局。<br/>-&nbsp;none:不渲染此元素。 |
75| [left\|top] | &lt;length&gt;&nbsp;\|&nbsp;&lt;percentage&gt;<sup>6+</sup> | - | 否 | left\|top确定元素的偏移位置。<br/>-&nbsp;left属性规定元素的左边缘。该属性定义了定位元素左外边距边界与其包含块左边界之间的偏移。<br/>-&nbsp;top属性规定元素的顶部边缘。该属性定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。 |
76
77
78## 示例
79
80
81```html
82<!-- xxx.hml -->
83<div class="container" @swipe="handleSwipe">
84  <text class="title">
85    Selected:{{time}}
86  </text>
87  <picker-view class="time-picker" type="time" selected="{{defaultTime}}" @change="handleChange"></picker-view>
88</div>
89```
90
91
92```css
93/* xxx.css */
94.container {
95  flex-direction: column;
96  justify-content: center;
97  align-items: center;
98  left: 0px;
99  top: 0px;
100  width: 454px;
101  height: 454px;
102}
103.title {
104  font-size: 30px;
105  text-align: center;
106}
107.time-picker {
108  width: 500px;
109  height: 400px;
110  margin-top: 20px;
111}
112```
113
114
115```js
116/* xxx.js */
117export default {
118  data: {
119    defaultTime: "",
120    time: "",
121  },
122  onInit() {
123    this.defaultTime = this.now();
124  },
125  handleChange(data) {
126    this.time = this.concat(data.hour, data.minute);
127  },
128  now() {
129    const date = new Date();
130    const hours = date.getHours();
131    const minutes = date.getMinutes();
132    return this.concat(hours, minutes);
133  },
134
135  fill(value) {
136    return (value > 9 ? "" : "0") + value;
137  },
138
139  concat(hours, minutes) {
140    return `${this.fill(hours)}:${this.fill(minutes)}`;
141  },
142}
143```
144
145![picker-view](figures/picker-view-lite.png)