189 8069 5689

创新互联百度小程序教程: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://cdxtjz.cn/article/dhjjphe.html

    联系我们

    您好HELLO!
    感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
    • 电话:028- 86922220 18980695689
    • 商务合作邮箱:631063699@qq.com
    • 合作QQ: 532337155
    • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

    小谭建站工作室

    成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

    小谭观点

    相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
    我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。