4.3 选择器组件
小程序组件库中提供了适合各种场景使用的选择器组件,如时间选择、日期选择、城市选择等,开发者也可以根据实际需求为选择器提供自定义的数据源。
4.3.1 普通选择器
普通选择器用来展示开发者提供的一组简单选项,以性别选择为例,在测试工程中创建一个新的页面,命名为picker,在picker.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/89_2.jpg?sign=1739341164-g8RYJ10x3lza2GznFhS4Hj3oBmn7bkqK-0-28a99b7da5e2d884af522f96b7679ec8)
picker就是小程序中的选择器组件,通过mode属性设置不同的模式,其中,selector为普通选择器模式,选择器的属性通过range属性设置,在picker.js文件的data对象中添加如下属性:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_1.jpg?sign=1739341164-PzZXZO0eXSFO7WAlpWj644NXYtjD26kD-0-05cf0764bbcc02c4cece647803faa562)
实现绑定的change()函数如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_2.jpg?sign=1739341164-mdNhAquuGyMRm7ZE644f7BGg15P7lKlq-0-d180134c09f59608d00a518dd79186cc)
运行上述代码,当单击页面上的文本时,会弹出选择列表。运行代码,效果如图4-15所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_3.jpg?sign=1739341164-ux6tcYUTVjaJehuh2C7wLzEh5XmvceVF-0-09ef97383127ef0074d493427c01c86c)
图4-15 普通选择器的运行效果
从图4-15可以看到,选择器中选项的值就是range属性指定的数组中字符串的值,如果数组中存放的不是普通字符串,而是对象,也可以指定选择器选择对象的某个属性作为选项进行显示。例如,修改data数据的示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_4.jpg?sign=1739341164-ypbO8IE9BO5YeKdq3KKO1Cn0rxNXdPPd-0-22aa68e8fc0df5f14f1811be56e67526)
修改picker.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_1.jpg?sign=1739341164-RG2XyYBveCLR7SjQsFL4uJcscFudxWL3-0-b570ad6d9c29c5c75a1c0a9c2cc585ec)
运行代码,效果如图4-16所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_2.jpg?sign=1739341164-dpc3ELMVnJzylsjeMQyhnIVqZtKOwOWA-0-fccb385b1144ce334a9e85fddb58e384)
图4-16 用对象属性作为选项的值
普通模式的选择器组件的常用属性如表4-13所示。
表4-13 普通模式的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_3.jpg?sign=1739341164-UOkW6MXuuXspZNfjayLQw34rvRWvGSVp-0-a2804b6c974e84e1dd3c4a689ae3dfe0)
4.3.2 多列选择器
普通选择器只支持单列数据选择,但很多时候需要为用户提供多列选择项目。例如,省份城市选择器,第1列需要用户选择省份,第2列需要用户选择当前省份下的城市。picker组件也提供了多列模式,设置mode属性为multiSelector即可。
在picker.js文件中添加一组省市数据和一个数组标记默认选择的省市,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_1.jpg?sign=1739341164-uFBSLcRwQXgA3aXtu700RjF5h8KEA1Rc-0-86aaa502ccaf271d973de9eb805e2f2d)
多列选择器使用二维数组的方式组织数据,其中,每个数组定义选择器中每列的所有选项,currentCity用来标记每列的选中位置。在picker.wxml文件中添加组件标签,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_2.jpg?sign=1739341164-pBWlVPboqkMcJVG57fPaTdGGxwaKSeB3-0-17b62faeef5d9d838c29644206a3a3a3)
运行代码,效果如图4-17所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_3.jpg?sign=1739341164-FzaMyd3OBfsFVzEoP4uYvGc11BxDkAQl-0-198375249e344904bf3eaba3ec35dff7)
图4-17 多列选择器的运行效果
多列模式下的选择器组件的常用属性如表4-14所示。
表4-14 多列模式下的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_4.jpg?sign=1739341164-VjYOL7W2ZcywOBc8ntryxpgaAgJd9vKF-0-d0ceb79bb1456a8e9fb9350ab610b6ed)
4.3.3 时间选择器
时间选择器专门为用户提供进行时间的选择,其需要设置picker组件的mode属性为time,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_1.jpg?sign=1739341164-BjvnYRniY6BDqw96zKxRGOvmQGESJkNe-0-6310554ff76879fd435c59df436509d4)
运行代码,效果如图4-18所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_2.jpg?sign=1739341164-E7DdDUhlm3EibM59nS2Pw4BzW8VBpNbv-0-c47de0ca7846a1f89afc105683439dd1)
图4-18 时间选择器的运行效果
时间模式下的选择器组件的常用属性如表4-15所示。
表4-15 时间模式下的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_3.jpg?sign=1739341164-brp1eYOeZfmBDd2HPDGxgCxxteE4wtVa-0-babbcb9af53598b108add34f27afedfd)
4.3.4 日期选择器
日期选择器与时间选择器的用法基本一致,为用户提供年、月、日的选择,设置picker组件的mode属性为date即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_1.jpg?sign=1739341164-biCTvV06pmm6aM6g31rSMC0rwFvzTRHt-0-6a49d682fdf1b72eb700432c8fdd0574)
运行代码,效果如图4-19所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_2.jpg?sign=1739341164-lsXaoVigQvFxJAt7PbQGMEH0NvZzfsTo-0-d6d0a28d14b792d533450386f30db2e2)
图4-19 日期选择器的运行效果
日期选择器的常用属性如表4-16所示。
表4-16 日期选择器的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_3.jpg?sign=1739341164-CS9ro91e9h9CRqh3bI19arYDc5UCLmQU-0-23ba68dbd8d2365efce0ad85b515a52b)
4.3.5 地区选择器
前面已经介绍了多种场景下使用的选择器组件,通过多列选择器可以根据需要定制各种复杂的选择器组件。起始,对于地区选择,小程序也提供了专门的选择器供开发者直接使用,将mode属性设置为region即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_4.jpg?sign=1739341164-fLzCv8NnDQKeDUqlvCIcMIgnzOsaZm7x-0-35595f58acbcacd6e7187783d4f2ab69)
运行代码,效果如图4-20所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/95_1.jpg?sign=1739341164-ItUWY4KZ3cKre0IWffbgEG2MYkpelAnJ-0-70832ce5f5e662834001b9b24d821a04)
图4-20 地区选择器的运行效果
地区选择器的常用属性如表4-17所示。
表4-17 地区选择器的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/95_2.jpg?sign=1739341164-BDkPQGAPVBrXfs0AkC2hMZC1piGHGTC4-0-18d2978ec48aead6738b2cb534087588)
4.3.6 选择器视图
通过上面的介绍可知,picker组件是系统封装好的一个弹窗组件。小程序组件库中也提供了直接定制选择器视图的组件:picker-view。
picker-view是一个直接显示在页面上的选择器视图,其内只能嵌套picker-view-column组件,picker-view-column用来描述选择器视图中的一列,其内可以放置其他任意组件,也可以使用循环的方式放入一组子组件。示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/95_3.jpg?sign=1739341164-hjOug9ulbMJqoXycjwmZndOgCKBvWzKa-0-b6bc268b389ddd20125d24c8bc0c3e54)
运行代码,效果如图4-21所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/96_2.jpg?sign=1739341164-hubHLfvBBseza44k1xJSsLKcJUAGixwl-0-4540a564880971cefad6abf9ad69de28)
图4-21 自定义选择器视图的运行效果
picker-view组件的常用属性如表4-18所示。
表4-18 picker-view组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/96_3.jpg?sign=1739341164-nK5lvUYNNJrUMgsdXzMYQ2S1gsIcZKXa-0-4b16b0f26730609799c64d01ecfc6838)