创新互联百度小程序教程:picker底部弹起的滚动选择器

  • picker 底部弹起的滚动选择器
    • 属性说明
      • mode 的有效值
      • 普通选择器:mode = selector
      • 时间选择器:mode = time
      • 日期选择器:mode = date
      • 多列选择器:mode = multiSelector
      • 省市区选择器:mode = region
    • 示例
      • 代码示例 1:普通选择器
      • 代码示例 2:时间选择器
      • 代码示例 3:日期选择器
      • 代码示例 4:多列选择器
      • 代码示例 5:省市区选择器
      • 代码示例 6:设置禁用
      • 代码示例 7:取消选择时触发提示
    • Bug & Tip

    picker 底部弹起的滚动选择器

    解释:从底部弹起的滚动选择器。现支持五种选择器,通过 mode 来区分,分别是时间选择器、日期选择器、普通选择器、多列选择器以及省市区选择器,默认是普通选择器。如需级联选择功能,可使用 Smart UI 组件,详见 cascade 级联。

    属性说明

    属性 类型 默认值 必填 说明
    mode String selector 选择器类型
    disabled Boolean false 是否禁用
    bindcancel EventHandle 取消选择或点击遮罩层收起 picker 时触发

    除去上述通用属性外,针对不同的 mode,picker 组件还提供有其他不同的属性,详细介绍见下。

    mode 的有效值

    说明
    selector 普通选择器
    time 时间选择器
    date 日期选择器
    multiSelector 多列选择器
    region 省市区选择器

    普通选择器:mode = selector

    属性名 类型 默认值 说明
    range Array/Array. [] mode 为 selector 或 multiSelector 时,range 有效
    range-key String 当 range 是一个 Array. 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
    value Number 0 value 的值表示选择了 range 中的第几个(下标从 0 开始)
    bindchange EventHandle value 改变时触发 change 事件, event.detail = {value: value}
    title String 选择器标题,建议标题控制在 12 个中文汉字长度内,避免出现截断现象, 截断部分将以 … 形式展示

    时间选择器:mode = time

    属性名 类型 默认值 说明
    value String 表示选中的时间,格式为“hh:mm”
    start String 表示有效时间范围的开始,字符串格式为“hh:mm”
    end String 表示有效时间范围的结束,字符串格式为“hh:mm”
    bindchange EventHandle value 改变时触发 change 事件, event.detail = {value: value}
    title String 选择器标题,建议标题控制在 12 个中文汉字长度内,避免出现截断现象, 截断部分将以 … 形式展示

    日期选择器:mode = date

    属性名 类型 默认值 说明
    value String 当前日期 表示选中的日期,格式为“YYYY-MM-DD”
    start String 表示有效日期范围的开始,字符串格式为“YYYY-MM-DD”
    end String 表示有效日期范围的结束,字符串格式为“YYYY-MM-DD”
    fields String day 有效值 year、 month、 day ,表示选择器的粒度
    bindchange EventHandle value 改变时触发 change 事件, event.detail = {value: value}
    title String 选择器标题,建议标题控制在 12 个中文汉字长度内,避免出现截断现象, 截断部分将以 … 形式展示

    fields 有效值

    说明
    year 选择器粒度为年
    month 选择器粒度为月
    day 选择器粒度为天

    多列选择器:mode = multiSelector

    属性名 类型 默认值 说明
    range Array/Array. [] mode 为 selector 或 multiSelector 时, range 有效。二维数组,长度表示多少列,数组的每项表示每列的数据,如[[“a”,”b”], [“c”,”d”]]。
    range-key String 当 range 是一个二维 Array. 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
    value Array [] value 每一项的值表示选择了 range 对应项中的第几个(下标从 0 开始)
    bindcolumnchange EventHandle 某一列的值改变时触发 columnchange 事件,event.detail = {column: column, value: value},column 的值表示改变了第几列(下标从 0 开始),value 的值表示变更值的下标
    bindchange EventHandle value 改变时触发 change 事件,event.detail = {value: value}
    title String 选择器标题,建议标题控制在 12 个中文汉字长度内,避免出现截断现象, 截断部分将以 … 形式展示

    省市区选择器:mode = region

    属性名 类型 默认值 说明
    value Array [] 表示选中的省市区,默认选中每一列的第一个值
    custom-item String 可为每一列的顶部添加一个自定义的项
    bindchange EventHandle value 改变时触发 change 事件,event.detail = {value},暂不支持统计用区划代码(code)、邮政编码(postcode)
    title String 选择器标题,建议标题控制在 12 个中文汉字长度内,避免出现截断现象, 截断部分将以 … 形式展示

    示例

    跳转编辑工具

    在开发者工具中打开

    在 WEB IDE 中打开

    扫码体验

    代码示例

    请使用百度APP扫码

    代码示例 1:普通选择器

    • SWAN
    • JS
     
     
     
    1. 普通选择器
    2. mode="selector"
    3. value="{{arrIndex}}"
    4. range="{{selector}}"
    5. range-key="name"
    6. title="选择器标题"
    7. bind:change="selectorChange">
    8. 请选择:{{selector[arrIndex].name}}
     
     
     
    1. Page({
    2. data: {
    3. selector: [{
    4. id: '1',
    5. name:'选项一'
    6. }, {
    7. id: '2',
    8. name:'选项二'
    9. }, {
    10. id: '3',
    11. name:'选项三'
    12. }],
    13. rangeKey: ['选项一'],
    14. arrIndex: 0
    15. },
    16. selectorChange(e) {
    17. console.log('picker-selector changed,值为', e.detail.value);
    18. this.setData('arrIndex', e.detail.value);
    19. }
    20. });

    代码示例 2:时间选择器

    • SWAN
    • JS
     
     
     
    1. 时间选择器
    2. mode="time"
    3. value="{{time}}"
    4. start="1:01"
    5. end="22:59"
    6. bind:change="timeChange"
    7. disabled="false">
    8. 请选择时间:{{time}}
     
     
     
    1. Page({
    2. data: {
    3. time: '12:12'
    4. },
    5. timeChange(e) {
    6. console.log('picker-time changed,值为', e.detail.value);
    7. this.setData(
    8. 'time', e.detail.value
    9. );
    10. }
    11. });

    代码示例 3:日期选择器

    • SWAN
    • JS
     
     
     
    1. 日期选择器
    2. mode="date"
    3. value="{{dateDay}}"
    4. bind:change="dateChangeDay"
    5. fields="day">
    6. 请选择日期:{{dateDay}}
     
     
     
    1. Page({
    2. data: {
    3. dateDay: '2018-01-05'
    4. },
    5. dateChangeDay(e) {
    6. console.log('picker-date changed,值为', e.detail.value);
    7. this.setData(
    8. 'dateDay', e.detail.value
    9. );
    10. }
    11. });

    代码示例 4:多列选择器

    • SWAN
    • JS
     
     
     
    1. 多列选择器
    2. mode="multiSelector"
    3. bindchange="bindMultiPickerChange"
    4. bindcolumnchange="bindMultiPickerColumnChange"
    5. value="{{multiIndex}}"
    6. range="{{multiArray}}"
    7. title="多列选择器">
    8. 请选择:{{multiArray[0][multiIndex[0]]}} {{multiArray[1][multiIndex[1]]}} {{multiArray[2][multiIndex[2]]}}
     
     
     
    1. Page({
    2. data: {
    3. multiIndex: [0, 0, 0],
    4. multiArray: [['无脊柱动物', '脊柱动物'], ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'], ['猪肉绦虫', '吸血虫']]
    5. },
    6. bindMultiPickerChange: function (e) {
    7. console.log('picker-multiSelector changed,值为', e.detail.value)
    8. this.setData(
    9. 'multiIndex', e.detail.value
    10. );
    11. },
    12. bindMultiPickerColumnChange: function (e) {
    13. console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
    14. var data = {
    15. multiArray: this.getData('multiArray'),
    16. multiIndex: this.getData('multiIndex')
    17. };
    18. data.multiIndex[e.detail.column] = e.detail.value;
    19. switch (e.detail.column) {
    20. case 0:
    21. switch (data.multiIndex[0]) {
    22. case 0:
    23. data.multiArray[1] = ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'];
    24. data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
    25. break;
    26. case 1:
    27. data.multiArray[1] = ['鱼', '两栖动物', '爬行动物'];
    28. data.multiArray[2] = ['鲫鱼', '带鱼'];
    29. break;
    30. }
    31. data.multiIndex[1] = 0;
    32. data.multiIndex[2] = 0;
    33. break;
    34. case 1:
    35. switch (data.multiIndex[0]) {
    36. case 0:
    37. switch (data.multiIndex[1]) {
    38. case 0:
    39. data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
    40. break;
    41. case 1:
    42. data.multiArray[2] = ['蛔虫'];
    43. break;
    44. case 2:
    45. data.multiArray[2] = ['蚂蚁', '蚂蟥'];
    46. break;
    47. case 3:
    48. data.multiArray[2] = ['河蚌', '蜗牛', '蛞蝓'];
    49. break;
    50. case 4:
    51. data.multiArray[2] = ['昆虫', '甲壳动物', '蛛形动物', '多足动物'];
    52. break;
    53. }
    54. break;
    55. case 1:
    56. switch (data.multiIndex[1]) {
    57. case 0:
    58. data.multiArray[2] = ['鲫鱼', '带鱼'];
    59. break;
    60. case 1:
    61. data.multiArray[2] = ['青蛙', '娃娃鱼'];
    62. break;
    63. case 2:
    64. data.multiArray[2] = ['蜥蜴', '龟', '壁虎'];
    65. break;
    66. }
    67. break;
    68. }
    69. data.multiIndex[2] = 0;
    70. break;
    71. }
    72. this.setData('multiArray', data.multiArray);
    73. this.setData('multiIndex', data.multiIndex);
    74. }
    75. });

    代码示例 5:省市区选择器

    • SWAN
    • JS
     
     
     
    1. 省市区选择器
    2. mode="region"
    3. bind:change="regionChange"
    4. custom-item="{{customItem}}"
    5. title="地区选择器">
    6. 请选择地区:{{regionData[0]}} {{regionData[1]}} {{regionData[2]}}
     
     
     
    1. Page({
    2. data: {
    3. regionData: ['全部', '全部', '全部']
    4. },
    5. regionChange(e) {
    6. this.setData(
    7. 'regionData', e.detail.value
    8. );
    9. console.log('picker-time changed,值为', e.detail.value);
    10. }
    11. });

    代码示例 6:设置禁用

    • SWAN
     
     
     
    1. 设置禁用
    2. disabled
    3. class="disabled"
    4. value="{{arrIndex}}"
    5. range="{{selector}}"
    6. range-key="name"
    7. disabled>
    8. 请选择:{{selector[arrIndex].name}}

    代码示例 7:取消选择时触发提示

    • SWAN
    • JS
     
     
     
    1. 取消选择时触发提示
    2. bindcancel
    3. value="{{arrIndex}}"
    4. range="{{selector}}"
    5. range-key="name"
    6. bind:change="selectorChange"
    7. bind:cancel="cancel">
    8. 请选择:{{selector[arrIndex].name}}
     
     
     
    1. Page({
    2. data: {
    3. arrIndex: 0,
    4. selector: ['选项一', '选项二', '选项三']
    5. },
    6. selectorChange(e) {
    7. console.log('picker-selector changed,值为', e.detail.value);
    8. this.setData('arrIndex', e.detail.value);
    9. },
    10. cancel() {
    11. swan.showToast({
    12. title: '用户取消选择',
    13. icon: 'none'
    14. });
    15. }
    16. });

    Bug & Tip

    • Tip:基础库版本 11.15 以下:picker 组件在 iOS 系统中从底部弹出,在安卓系统中从中间弹出。

    • Tip:基础库版本 11.15 及以上:picker 组件双端都是从底部弹出。

    当前文章:创新互联百度小程序教程:picker底部弹起的滚动选择器
    文章转载:http://www.shufengxianlan.com/qtweb/news27/429877.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联