• uni-app 之 picker选择器


    uni-app 之 picker选择器

    同步滚动:开

    uni-app 之 picker选择器

    一、普通选择器
    二、多列选择器
    三、时间选择器
    四、日期选择器

    一、普通选择器

    1. <template>
    2. <view>
    3. <picker @change="bindPickerChange" :value="index" :range="array" range-key="name">
    4. <view style="padding: 20rpx;background-color: white;">{{ array[index].name }}</view>
    5. </picker>
    6. </view>
    7. </template>
    8. <script>
    9. export default {
    10. data() {
    11. return {
    12. array: [{ name: '中国' }, { name: '美国' }, { name: '巴西' }, { name: '日本' }],
    13. index: 2,
    14. };
    15. },
    16. methods: {
    17. bindPickerChange: function(e) {
    18. this.index = e.detail.value;
    19. }
    20. }
    21. };
    22. </script>

    二、多列选择器

    1. <template>
    2. <view>
    3. <picker mode="multiSelector" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray">
    4. <view style="background-color: white;">
    5. {{ multiArray[0][multiIndex[0]] }},
    6. {{ multiArray[1][multiIndex[1]] }},
    7. {{ multiArray[2][multiIndex[2]] }}
    8. </view>
    9. </picker>
    10. </view>
    11. </template>
    12. <script>
    13. export default {
    14. data() {
    15. return {
    16. multiArray: [['亚洲', '欧洲'], ['中国', '日本'], ['北京', '上海', '广州']],
    17. multiIndex: [0, 0, 0]
    18. };
    19. },
    20. methods: {
    21. bindMultiPickerColumnChange: function(e) {
    22. this.multiIndex[e.detail.column] = e.detail.value;
    23. switch (e.detail.column) {
    24. case 0: //拖动第1
    25. switch (this.multiIndex[0]) {
    26. case 0:
    27. this.multiArray[1] = ['中国', '日本'];
    28. this.multiArray[2] = ['北京', '上海', '广州'];
    29. break;
    30. case 1:
    31. this.multiArray[1] = ['英国', '法国'];
    32. this.multiArray[2] = ['伦敦', '曼彻斯特'];
    33. break;
    34. }
    35. this.multiIndex.splice(1, 1, 0);
    36. this.multiIndex.splice(2, 1, 0);
    37. break;
    38. case 1: //拖动第2
    39. switch (
    40. this.multiIndex[0] //判断第一列是什么
    41. ) {
    42. case 0:
    43. switch (this.multiIndex[1]) {
    44. case 0:
    45. this.multiArray[2] = ['北京', '上海', '广州'];
    46. break;
    47. case 1:
    48. this.multiArray[2] = ['东京', '北海道'];
    49. break;
    50. }
    51. break;
    52. case 1:
    53. switch (this.multiIndex[1]) {
    54. case 0:
    55. this.multiArray[2] = ['伦敦', '曼彻斯特'];
    56. break;
    57. case 1:
    58. this.multiArray[2] = ['巴黎', '马赛'];
    59. break;
    60. }
    61. break;
    62. }
    63. this.multiIndex.splice(2, 1, 0);
    64. break;
    65. }
    66. this.$forceUpdate();
    67. }
    68. }
    69. };
    70. </script>

    image.png

    三、时间选择器

    1. <template>
    2. <view>
    3. <picker mode="time" :value="time" :start="minTime" :end=maxTime @change="bindTimeChange">
    4. <view style="background-color: white;">{{ time }}</view>
    5. </picker>
    6. </view>
    7. </template>
    8. <script>
    9. export default {
    10. data() {
    11. return {
    12. time: '12:01',
    13. minTime:'09:01',
    14. maxTime:"21:01"
    15. };
    16. },
    17. methods: {
    18. bindTimeChange: function(e) {
    19. this.time = e.detail.value;
    20. }
    21. }
    22. };
    23. </script>

    image.png

    四、日期选择器

    1. <template>
    2. <view>
    3. <picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
    4. <view style="background-color: #07C160;">{{ date }}</view>
    5. </picker>
    6. </view>
    7. </template>
    8. <script>
    9. function getDate(type) {
    10. const date = new Date();
    11. let year = date.getFullYear();
    12. let month = date.getMonth() + 1;
    13. let day = date.getDate();
    14. if (type === 'start') {
    15. year = year - 10;
    16. } else if (type === 'end') {
    17. year = year + 10;
    18. }
    19. month = month > 9 ? month : '0' + month;
    20. day = day > 9 ? day : '0' + day;
    21. return `${year}-${month}-${day}`;
    22. }
    23. export default {
    24. data() {
    25. return {
    26. date: getDate({
    27. format: true
    28. }),
    29. startDate: getDate('start'),
    30. endDate: getDate('end'),
    31. };
    32. },
    33. methods: {
    34. bindDateChange: function(e) {
    35. this.date = e.detail.value;
    36. }
    37. }
    38. };
    39. </script>
  • 相关阅读:
    PCM格式图解
    HarmonyOS/OpenHarmony应用开发-FA卡片开发体验
    视频转图像-cv2.VideoCapture()用法
    《Linux运维实战:创建LVM挂载到指定目录》
    【博客547】keepalived实现vip的原理剖析
    RabbitMQ
    阿里巴巴 Java性能诊断工具Arthas
    C++11特性-右值与右值引用
    以数字技术赋能产业金融生态能力建设,破解银行的场景焦虑
    剧本杀公众号系统开发在线组队开团多玩法
  • 原文地址:https://blog.csdn.net/jun_tong/article/details/132989983