使用 van-picker 组件模拟 DatetimePicker 组件单独选择年份

使用 van-picker 组件模拟 DatetimePicker 组件单独选择年份前言 现在有这样一个需求,就是当设置选择时间为年的时候,我们要向用户展示单独的年份以供选择。 效果图如下: Vant 组件库中 DatetimePicker 时间选择组件,支持选择年月日,支持选择年月

前言

现在有这样一个需求,就是当设置选择时间为年的时候,我们要向用户展示单独的年份以供选择。 效果图如下:

image.png

Vant 组件库中 DatetimePicker 时间选择组件,支持选择年月日,支持选择年月,但是 不支持单独选择年份.

所以为了实现这个效果,我们使用 picker 组件来实现我们的需求。

template
<van-field
  readonly
  clickable
  label="日期"
  :value="currentDate"
  placeholder="选择日期"
  @click="openPicker"
/>
<van-popup v-model="timePicker" round get-container="body" position="bottom" > <van-picker show-toolbar title="选择时间" :default-index="defaultIndex" :columns="columns" @cancel="timePicker = false" @confirm="confirmDate" /> </van-popup>
script
import moment from 'moment';

const lastYear = moment('2050').year();
const yearsList = [...new Array(151).keys()]
  .map((k) => {
    return `${lastYear - k}年`;
  })
  .reverse();

export default {
    data() {
        return {
          currentDate: '', // 当前展示时间
          timePicker: false,
          columns: yearsList, // 
          defaultIndex: 0
        };
    },
    methods: {
        openPicker() {
          const currentIndex = yearsList.findIndex((item) => {
            return (
              item === (this.currentDate || `${moment().year()}年`)
            );
          });
          this.defaultIndex = currentIndex > -1 ? currentIndex : 0;
          this.timePicker = true;
        },
        // 回调参数: 多列:所有列选中值,所有列选中值对应的索引
        confirmDate(value) {
          this.currentDate = value;
          this.timePicker = false;
        }
    }
};

最后


  • 文章是自己手敲,是对工作日常的总结,如有错误之处,敬请指正
  • 如果遇到什么问题就留言吧,能解决大家帮忙一起解决一下

今天的文章使用 van-picker 组件模拟 DatetimePicker 组件单独选择年份分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21472.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注