首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 初步介绍微信小程序
02 | 还有哪些其它公司的小程序产品
03 | 小程序的特点及开发能力
04 | 新的一年,微信小程序开放了哪些新功能?
05 | 小程序运行机制简介:从零构建一个Web App需要做哪些事情?
06 | 开发环境配置:创建你的第一个小程序项目
07 | icon组件:关于图标的4个实现方案
08 | progress组件:如何自定义实现一个环形进度条?
09 | rich-text组件:如何单击预览rich-text中的图片并保存?
10 | view容器组件及Flex布局(一):学习容器组件view及其重要属性
11 | view容器组件及Flex布局(二):介绍flex布局中常用的样式及样式值
12 | 可移动容器及可移动区域(一):学习使用movable-view与movable-area组件
13 | 可移动容器及可移动区域(二):如何实现侧滑删除功能
14 | scroll-view介绍:在小程序中如何实现滚动锚定?
15 | scroll-view介绍:如果渲染一个滚动的长列表?
16 | 滚动选择器(一):学习使用选择器组件
17 | 滚动选择器(二):使用两种方式自定义实现省、市、区三级联动的选择器
18 | 滑动选择器表单组件:如何基于wxs自定义一个竖向的slider?
19 | 页面链接组件:如何自定义一个导航栏?
20 | image媒体组件(上):如何实现图片的懒加载?
21 | image媒体组件(下):开发中经常遇到的问题?
22 | 如何实现直播间功能?(一):了解live-pusher、live-player组件的主要属性及使用限制
23 | 如何实现直播间功能?(二):如何开启、使用腾讯云的云直播功能
24 | 如何实现直播间功能?(三):安装与使用ffmepg,及使用ffmpeg进行推拉流验证
25 | 如何实现直播间功能?(四):使用live-pusher、live-player组件在小程序中实现直播功能
26 | 如何实现直播间功能?(五):同层渲染
27 | 如何实现直播间功能?(六):live-pusher、live-player组件在开发中的常见问题
28 | web-view(一):了解session、cookie等相关基本概念
29 | web-view(二):了解常见的四种鉴权方式
30 | web-view(三):如何使用koa框架,及如何进行热加载?
31 | web-view(四):如何在服务器端实现cookie与sesson的生成?
32 | web-view(五):如何将session存储到服务器端,及如何实现token验证?
33 | web-view(六):基于koa中间件,实现微信一键登录的后端接口
34 | web-view(七):实现微信用户一键登录
35 | web-view(八):了解正确的微信登录姿势
36 | web-view(九):web-view组件在开发的常见问题讲解
37 | WebGL介绍(一):了解WebGL相关的基础概念
38 | WebGL介绍(二):如何在小程序中取到WebGL上下文环境对象
39 | WebGL介绍(三):了解WebGL的世界坐标系
40 | WebGL介绍(四):重新认识右手坐标系及如何编写顶点着色器代码
41 | WebGL介绍(五):学习片断着色器编写,了解变量修饰变型uniform与attribute
42 | WebGL介绍(六):了解在WebGL中裁剪空间是如何裁剪出来的
43 | WebGL介绍(七):了解着色器变量值的绑定及三种三角形绘制模式之间的差异
44 | WebGL介绍(八):在着色器中使用共享变量,绘制一个颜色渐变的正方形
45 | WebGL介绍(九):完成动画
46 | WebGL介绍(十):绘制一个旋转的立方体
47 | WebGL介绍(十一):在3D绘制中使用纹理材质
48 | WebGL介绍(十二):如何创建相机、场景及光源
49 | WebGL介绍(十三):创建加载器、渲染器与控制器,完成3D模型文件的加载与展示
50 | 网络接口简介(一):如何使用wx.request接口
51 | 网络接口简介(二):将登录代码模块化封装
52 | 网络接口简介(三):Promise介绍及 6 个常用方法
53 | 网络接口简介(四):Promise三个方法any、all与race的使用介绍
54 | 网络接口简介(五):基于Promise+await、async关键字改写登录模块
55 | 网络接口简介(六):关于Page页面隐藏代码执行及Promise对象的catch处理的补充
56 | 网络接口简介(七):学习EventChannel对象
57 | 网络接口简介(八):观察者模式介绍及Event模块实现
58 | 网络接口简介(九):扩展wxp模块的request3方法,实现用户登录的自动融合
59 | tabBar组件(一):系统默认的tabBar组件如何开启及使用
60 | tabBar组件(二):基于系统提供的自定义方式,实现一个tabBar组件
61 | tabBar组件(三):通过自定义组件扩展的方式,给任意组件添加通用方法
62 | 开放接口(一):如何对Page进行全局扩展
63 | 开放接口(二):优化前后端登录代码,解决后端解密错误
当前位置:
首页>>
技术小册>>
微信小程序全栈开发实战(上)
小册名称:微信小程序全栈开发实战(上)
### 第十六章 滚动选择器(一):学习使用选择器组件 在微信小程序的开发过程中,滚动选择器(Picker)是一个非常实用且常见的组件,它允许用户在一个有限的选项列表中滚动选择,常见于日期选择、时间选择、城市选择等场景。本章将深入探讨微信小程序中的选择器组件(picker),从基础使用到高级配置,帮助读者全面掌握这一重要组件。 #### 1. 选择器组件基础 微信小程序提供了`<picker>`组件作为滚动选择器的实现。该组件通过不同的`mode`属性来定义不同的选择器类型,如普通选择器、时间选择器、日期选择器、多列选择器等。在使用`<picker>`组件之前,首先需要了解其基本属性与方法。 ##### 1.1 基本属性 - **mode**: 定义选择器的类型,可选值包括`selector`(普通选择器,文本选择)、`multiSelector`(多列选择器)、`time`(时间选择器)、`date`(日期选择器)、`region`(地区选择器,包括省市区三级联动)。 - **range**: 当`mode`为`selector`或`multiSelector`时,`range`是一个二维数组,表示选项列表,二维数组的每一项表示picker的一列。 - **value**: 表示当前选中项的值,可以是字符串或者字符串数组(对于`multiSelector`)。 - **start`: 表示初始时的选中位置,对于`date`和`time`模式有效。 - **end**: 表示结束时的选中位置,仅对`time`模式有效,用于定义时间选择器的结束时间范围。 - **fields**: 定义返回的日期字段,仅对`date`模式有效,如`"year,month,day"`。 - **bindchange**: 当选择器发生变化时触发的事件处理函数。 ##### 1.2 基本用法示例 以下是一个简单的普通选择器(`mode="selector"`)示例: ```xml <!-- pages/picker/picker.wxml --> <view class="container"> <picker mode="selector" range="{{array}}" value="{{index}}" bindchange="bindPickerChange"> <view class="picker">{{array[index]}}</view> </picker> </view> ``` ```javascript // pages/picker/picker.js Page({ data: { array: ['美国', '中国', '巴西', '日本'], index: 0, }, bindPickerChange: function(e) { this.setData({ index: e.detail.value }) } }) ``` 在上面的例子中,我们定义了一个包含四个国家名称的`array`数组,并通过`range`属性将其传递给`<picker>`组件。`value`属性初始化为`0`,表示默认选中第一个选项(美国)。当用户改变选择时,`bindPickerChange`函数会被触发,并更新`index`的值以反映新的选择。 #### 2. 时间选择器与时间范围选择器 时间选择器(`mode="time"`)和时间范围选择器虽然微信官方文档中没有直接提供后者作为独立组件,但可以通过组合两个时间选择器来实现。 ##### 2.1 时间选择器 时间选择器允许用户选择具体的时间点,通过`start`和`end`属性(后者仅对`time`模式有效且用于限制可选时间范围)来定义可选的时间范围。 ```xml <picker mode="time" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange"> <view class="picker">{{time}}</view> </picker> ``` 在JavaScript中,需要维护一个表示当前选中时间的变量(如`time`),并在`bindTimeChange`函数中更新它。 ##### 2.2 实现时间范围选择器 时间范围选择器可以通过两个时间选择器组件实现,分别用于选择开始时间和结束时间,并通过逻辑控制确保结束时间不早于开始时间。 ```xml <!-- 开始时间选择器 --> <picker mode="time" value="{{startTime}}" start="00:00" end="23:59" bindchange="bindStartTimeChange"> <view class="picker">开始时间: {{startTime}}</view> </picker> <!-- 结束时间选择器 --> <picker mode="time" value="{{endTime}}" start="{{startTime}}" end="23:59" bindchange="bindEndTimeChange"> <view class="picker">结束时间: {{endTime}}</view> </picker> ``` 在JavaScript中,需要确保`endTime`的`start`属性始终等于`startTime`的值,以保证逻辑正确性。 #### 3. 日期选择器 日期选择器(`mode="date"`)允许用户选择具体的日期。通过`fields`属性可以定义返回的日期字段(如年、月、日)。 ```xml <picker mode="date" value="{{date}}" fields="year,month,day" bindchange="bindDateChange"> <view class="picker">选择日期: {{date}}</view> </picker> ``` 在`bindDateChange`函数中,可以获取到用户选择的日期,并根据需要进行处理。 #### 4. 地区选择器 地区选择器(`mode="region"`)提供了省市区三级联动的功能,非常适合用于地址信息的选择。 ```xml <picker mode="region" value="{{region}}" bindchange="bindRegionChange"> <view class="picker">选择地区: {{region[0]}} {{region[1]}} {{region[2]}}</view> </picker> ``` 这里,`region`是一个包含三个元素的数组,分别表示省、市、区。用户选择后,`bindRegionChange`函数会被触发,并返回一个新的包含三个选中值的数组。 #### 5. 多列选择器 多列选择器(`mode="multiSelector"`)允许用户在一个二维数组定义的选项列表中,从每一列中选择一个选项。这在处理如商品规格选择等场景时非常有用。 ```xml <picker mode="multiSelector" range="{{multiArray}}" value="{{multiIndex}}" bindchange="bindMultiSelectorChange"> <view class="picker"> <!-- 这里需要根据multiIndex动态显示选中项 --> <block wx:for="{{multiIndex}}" wx:key="index"> {{multiArray[index][item]}} </block> </view> </picker> ``` 在JavaScript中,需要维护`multiArray`(选项列表)和`multiIndex`(当前选中项的索引数组)。`bindMultiSelectorChange`函数用于处理用户的选择变化。 #### 6. 自定义样式与交互 虽然`<picker>`组件本身提供了一定程度的样式定制能力(如通过`class`属性),但在某些情况下,开发者可能需要对选择器进行更深入的自定义,如改变弹出层的样式、增加动画效果等。这时,可以考虑使用微信小程序的自定义组件功能,结合`<view>`、`<scroll-view>`等组件来模拟`<picker>`的行为。 #### 7. 小结 本章详细介绍了微信小程序中`<picker>`组件的基础用法、不同类型选择器的实现方式,以及如何通过自定义样式和交互来提升用户体验。通过学习和实践这些内容,读者将能够灵活运用选择器组件,为小程序添加丰富的交互功能。在接下来的章节中,我们将继续深入探讨滚动选择器的进阶应用,包括与其他组件的联动、动态生成选项列表等高级话题。
上一篇:
15 | scroll-view介绍:如果渲染一个滚动的长列表?
下一篇:
17 | 滚动选择器(二):使用两种方式自定义实现省、市、区三级联动的选择器
该分类下的相关小册推荐:
微信小程序与云开发(中)
微信小程序全栈开发实战(中)
微信小程序与云开发(下)
微信小程序与云开发(上)
微信小程序底层框架实现原理
微信小程序全栈开发实战(下)