Picker

选择器,基于 picker-viewpicker-view-column 实现,来自于 mpvue-picker

Picker - 图1

引入

  1. import mpPicker from 'mpvue-weui/src/picker';
  2. export default {
  3. components: {
  4. mpPicker,
  5. },
  6. }

使用

  1. <button type="default" @click="showMulLinkageTwoPicker">二级联动选择</button>
  2. <mp-picker ref="mpPicker" :mode="mode" :deepLength=deepLength :pickerValueDefault="pickerValueDefault" @onChange="onChange" @onConfirm="onConfirm" @onCancel="onCancel" :pickerValueArray="pickerValueArray"></mp-picker>
  1. export default {
  2. ...
  3. data() {
  4. return {
  5. mode: 'multiLinkageSelector',
  6. pickerValueArray: [
  7. {
  8. label: '飞机票',
  9. value: 100,
  10. children: [
  11. {
  12. label: '经济舱',
  13. value: 101
  14. },
  15. {
  16. label: '商务舱',
  17. value: 102
  18. }
  19. ]
  20. },
  21. {
  22. label: '火车票',
  23. value: 200,
  24. children: [
  25. {
  26. label: '卧铺',
  27. value: 210
  28. },
  29. {
  30. label: '坐票',
  31. value: 202
  32. },
  33. {
  34. label: '站票',
  35. value: 203
  36. }
  37. ]
  38. },
  39. {
  40. label: '汽车票',
  41. value: 300,
  42. children: [
  43. {
  44. label: '快班',
  45. value: 301
  46. },
  47. {
  48. label: '普通',
  49. value: 302
  50. }
  51. ]
  52. }
  53. ],
  54. pickerValueDefault: [1, 0]
  55. };
  56. },
  57. methods: {
  58. showMulLinkageTwoPicker() {
  59. this.$refs.mpPicker.show();
  60. },
  61. onConfirm(e) {
  62. console.log(e);
  63. },
  64. onChange(e) {
  65. console.log(e);
  66. },
  67. onCancel(e) {
  68. console.log(e);
  69. }
  70. }
  71. };

初始化

在父组件中调用 mpPicker 实例中的 show 方法:

  1. this.$refs.mpPicker.show();

API

参数说明类型默认值
modepicker 组件类型Stringselector
pickerValueArraypicker 渲染数据Array-
pickerValueDefaultpicker 默认选中值Array[]
deepLength几级联动Number2

参数说明

mode

  • 可选值:
    • selector(单列)
    • timeSelector(时间选择)
    • multiSelector(多列)
    • multiLinkageSelector(级联)
  • 是否必填: 否

pickerValueArray

  • 是否必填: 是(当 mode 值为 timeSelector 不用填)

pickerValueDefault

  • 是否必填: 否 (当同一个组件使用多种 mode 来回切换使用时 pickerValueDefault 必填)

Event

事件名说明参数
@onChange组件滚动时回调返回选中的 label, value 和数组索引 index 的值
@onConfirm组件点击确定时回调返回选中的 label, value 和数组索引 index 的值
@onCancel组件点击取消时回调返回选中的 label, value 和数组索引 index 的值

相关数据结构说明

单列

单列数据结构
  1. pickerValueArray: [
  2. {
  3. label: '住宿费',
  4. value: 1
  5. },
  6. {
  7. label: '活动费',
  8. value: 2
  9. },
  10. {
  11. label: '通讯费',
  12. value: 3
  13. },
  14. {
  15. label: '补助',
  16. value: 4
  17. }
  18. ],

多列

多列数据结构
  1. pickerMulArray: [
  2. [
  3. { label: '中国', value: 1 },
  4. { label: '美国', value: 2 },
  5. { label: '日本', value: 3 },
  6. { label: '俄罗斯', value: 4 }
  7. ],
  8. [
  9. { label: '茶', value: 1 },
  10. { label: '咖啡', value: 2 },
  11. { label: '寿司', value: 3 },
  12. { label: '奶酪', value: 4 }
  13. ],
  14. [
  15. { label: '歼20', value: 1 },
  16. { label: 'F22', value: 2 },
  17. { label: '秋月级', value: 3 },
  18. { label: 'T50', value: 4 }
  19. ]
  20. ]

二级联动

二级联动数据结构
  1. pickerValueArray:
  2. [
  3. {
  4. label: '飞机票',
  5. value: 0,
  6. children: [{
  7. label: '经济舱',
  8. value: 1
  9. },
  10. {
  11. label: '商务舱',
  12. value: 2
  13. }
  14. ]
  15. },
  16. {
  17. label: '火车票',
  18. value: 1,
  19. children: [{
  20. label: '卧铺',
  21. value: 1
  22. },
  23. {
  24. label: '坐票',
  25. value: 2
  26. },
  27. {
  28. label: '站票',
  29. value: 3
  30. }
  31. ]
  32. },
  33. {
  34. label: '汽车票',
  35. value: 3,
  36. children: [{
  37. label: '快班',
  38. value: 1
  39. },
  40. {
  41. label: '普通',
  42. value: 2
  43. }
  44. ]
  45. }
  46. ]

三级联动

三级联动数据结构
  1. pickerValueArray:
  2. [
  3. {
  4. label: 'phone',
  5. value: 0,
  6. children: [
  7. {
  8. label: 'iphone',
  9. value: 1,
  10. children: [{
  11. label: 'iphoneX',
  12. value: 1
  13. },
  14. {
  15. label: 'iphone8',
  16. value: 2
  17. }, {
  18. label: 'iphone8 Plus',
  19. value: 3
  20. }]
  21. },
  22. {
  23. label: 'android',
  24. value: 1,
  25. children: [
  26. {
  27. label: 'vivo',
  28. value: 1
  29. },
  30. {
  31. label: '魅族',
  32. value: 2
  33. }, {
  34. label: '小米',
  35. value: 3
  36. }
  37. ]
  38. }
  39. ]
  40. },
  41. {
  42. label: 'PC',
  43. value: 0,
  44. children: [
  45. {
  46. label: 'mac',
  47. value: 1,
  48. children: [
  49. {
  50. label: 'macbook Pro',
  51. value: 1
  52. },
  53. {
  54. label: 'iMac',
  55. value: 2
  56. }, {
  57. label: 'mackbook',
  58. value: 3
  59. }, {
  60. label: 'mackbook air',
  61. value: 3
  62. }
  63. ]
  64. },
  65. {
  66. label: 'windows',
  67. value: 1,
  68. children: [
  69. {
  70. label: 'dell',
  71. value: 1
  72. },
  73. {
  74. label: 'surface',
  75. value: 2
  76. }, {
  77. label: 'thinkpad',
  78. value: 3
  79. }
  80. ]
  81. }
  82. ]
  83. }
  84. ]