![微信小程序开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/512/30918512/b_30918512.jpg)
4.3 选择器组件
小程序组件库中提供了适合各种场景使用的选择器组件,如时间选择、日期选择、城市选择等,开发者也可以根据实际需求为选择器提供自定义的数据源。
4.3.1 普通选择器
普通选择器用来展示开发者提供的一组简单选项,以性别选择为例,在测试工程中创建一个新的页面,命名为picker,在picker.wxml文件中编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/89_2.jpg?sign=1739285297-WcfsIjsbhoB3wdKuxKN7henjkyxPQQyb-0-aa8ec2057de743d44c1d1624f62e1c80)
picker就是小程序中的选择器组件,通过mode属性设置不同的模式,其中,selector为普通选择器模式,选择器的属性通过range属性设置,在picker.js文件的data对象中添加如下属性:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_1.jpg?sign=1739285297-wRleprbUVi5oEJYojZtl0hiaQajTh6yo-0-70adcde59ef73dd64350a769094e5134)
实现绑定的change()函数如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_2.jpg?sign=1739285297-cMLky3AxZ1eqoC4B2b0N3EG9F8xV4rCj-0-edbc9c8582c10c4efe7efe48f6c8a257)
运行上述代码,当单击页面上的文本时,会弹出选择列表。运行代码,效果如图4-15所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_3.jpg?sign=1739285297-efqXMRiITFDx6fy4BJkdoW1ggl5K0mta-0-c131934d91fb37e213fe8ab04ae3c2c8)
图4-15 普通选择器的运行效果
从图4-15可以看到,选择器中选项的值就是range属性指定的数组中字符串的值,如果数组中存放的不是普通字符串,而是对象,也可以指定选择器选择对象的某个属性作为选项进行显示。例如,修改data数据的示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/90_4.jpg?sign=1739285297-bmvIR0rC1ndUeG0eTEBy7ZibmnZ41bF2-0-92be5434b0d7655744d79f10d69e3615)
修改picker.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_1.jpg?sign=1739285297-3ZUUiLJcZFcbc5hruw9uQuKPyx6FGZyF-0-07215b062a669b6e7066718d3c17b68a)
运行代码,效果如图4-16所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_2.jpg?sign=1739285297-iXXHODdISSmTiD3Sqc41g8DxKDv81ESt-0-a5b8ad09d8379d1723dac1fe2eb741f9)
图4-16 用对象属性作为选项的值
普通模式的选择器组件的常用属性如表4-13所示。
表4-13 普通模式的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/91_3.jpg?sign=1739285297-EBAer5cd1KpGllG1WikoRYmr5cfiMKZ9-0-8c2cc5ee2b0c924c656cdc2015637e9c)
4.3.2 多列选择器
普通选择器只支持单列数据选择,但很多时候需要为用户提供多列选择项目。例如,省份城市选择器,第1列需要用户选择省份,第2列需要用户选择当前省份下的城市。picker组件也提供了多列模式,设置mode属性为multiSelector即可。
在picker.js文件中添加一组省市数据和一个数组标记默认选择的省市,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_1.jpg?sign=1739285297-ls8EVQYhDLayNZmXhKeIraSApbbZAfaD-0-0145dcb544a86848703764a9951b899c)
多列选择器使用二维数组的方式组织数据,其中,每个数组定义选择器中每列的所有选项,currentCity用来标记每列的选中位置。在picker.wxml文件中添加组件标签,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_2.jpg?sign=1739285297-bfn7ut4RovGMviLEgLKFQJSowhorErid-0-c1654ddb5d3198915305a746e08fe47f)
运行代码,效果如图4-17所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_3.jpg?sign=1739285297-6LnTXxBdwHYU98jYMKRWfQ3ujzgZPSat-0-b7a1dc6140da487e4c8648dba0367b72)
图4-17 多列选择器的运行效果
多列模式下的选择器组件的常用属性如表4-14所示。
表4-14 多列模式下的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/92_4.jpg?sign=1739285297-seabZoBe1N3RmbELg5xUoiEIiAWjDaId-0-fc2f80bd545caabf12142f3a9cc4dbbb)
4.3.3 时间选择器
时间选择器专门为用户提供进行时间的选择,其需要设置picker组件的mode属性为time,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_1.jpg?sign=1739285297-W1gHFxmUDJjTCbIn5KQppDGmGDTCcU0E-0-19cffc8c1297bfa369012a93990fa033)
运行代码,效果如图4-18所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_2.jpg?sign=1739285297-KfaDevksNmrY4VNocNh0YYB0zrD0pVSX-0-11d346da5902f5f4dc69471c918e03a3)
图4-18 时间选择器的运行效果
时间模式下的选择器组件的常用属性如表4-15所示。
表4-15 时间模式下的选择器组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/93_3.jpg?sign=1739285297-rWXz9nfVISBrnUYlW0ALBOjeSzGwUhaR-0-b90dcd8ef918dfec834f852bfdede87a)
4.3.4 日期选择器
日期选择器与时间选择器的用法基本一致,为用户提供年、月、日的选择,设置picker组件的mode属性为date即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_1.jpg?sign=1739285297-BWyP3uUXgTNP3DahEU9NeqsXpsqFFjzS-0-6d441182b592dc29a1821862fc3aedc3)
运行代码,效果如图4-19所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_2.jpg?sign=1739285297-IzK9ipMIBvIgPF86oxsqZTm3QSMZIGYI-0-609796f4146985ab0f51bb7fc81371c3)
图4-19 日期选择器的运行效果
日期选择器的常用属性如表4-16所示。
表4-16 日期选择器的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_3.jpg?sign=1739285297-39G5hfWGYgqYmff7IpFZ1KhhHkNxlNYI-0-a6060dcf98aa0502e1f79fff6010f574)
4.3.5 地区选择器
前面已经介绍了多种场景下使用的选择器组件,通过多列选择器可以根据需要定制各种复杂的选择器组件。起始,对于地区选择,小程序也提供了专门的选择器供开发者直接使用,将mode属性设置为region即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/94_4.jpg?sign=1739285297-pd0uMjAIcIqudRgwnymhanOEnkuVoXzz-0-c5ba7139c55316e7d6d04f1a761d0fe7)
运行代码,效果如图4-20所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/95_1.jpg?sign=1739285297-MYiY6GO640CWDs8XWXg3tpMiWNAN50K7-0-c8eedb9149256dfd6e49fc748aa47e5b)
图4-20 地区选择器的运行效果
地区选择器的常用属性如表4-17所示。
表4-17 地区选择器的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/95_2.jpg?sign=1739285297-LzwGTmgHa07tamvoO2PPS9cun14Xjs78-0-304dbe0b46d2c5db4717298775b3c297)
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=1739285297-CZ4ZA11r9AZZbLwBzklOefXa8LCMTdwB-0-a51148323eb3c5354352cec62c6af40e)
运行代码,效果如图4-21所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/96_2.jpg?sign=1739285297-rkP0jejU1pRTefWAM44CC1d7OyzT1FmR-0-399055749c335c69961eebd65797037b)
图4-21 自定义选择器视图的运行效果
picker-view组件的常用属性如表4-18所示。
表4-18 picker-view组件的常用属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/96_3.jpg?sign=1739285297-uukkeMf7yyA48Z6zPn5ZJdLHdnMoCVAh-0-27fba0ec9f4e5a2e98a0b93229214a41)