因为ant design vue 里面没有原生的年份选择器,需要使用date-picker去改造

html:

<a-date-picker
 mode="year"
 v-decorator="['year']"
 placeholder="请输入年份"
 format="YYYY"
 style="width: 200px"
 :open="yearShowOne"
@openChange="openChangeOne"
  @panelChange="panelChangeOne"/>

属性说明,mode设置year后选择器面板变成年份选择器,v-decorator 将year交给form控制,format格式化为年(如果在方法里面给v-model或者value、v-decorator绑定的变量都赋值后,回显还是年月日,要看看这个格式化有没有打开,open控制年份选择面板的显示与消失 yearShowOne初始值为false。openChang控制年份选择面板的打开与关闭,panelChange控制面板内选择值的变化

js:

// 弹出日历和关闭日历的回调
    openChangeOne(status) {
      if (status) {
        this.yearShowOne = true;
      }
    },
    // 得到年份选择器的值
    panelChangeOne(value) {
      this.yearShowOne = false;
      this.year = value;
      this.$nextTick(() => {
        this.form.setFieldsValue({
          year: value,
        });
      });
    },

这里为什么要用form.setFieldsValue在给form监控的year给赋值呢,其实form并没有年份选择器做到真正的监听,这里赋值只是为了,当选择之后有一个回显。同理既然监听不了我们可以试一下value和v-model,都是能够完成的,但是要注意的是v-decorator不能跟他们共同使用。

效果图:

Logo

前往低代码交流专区

更多推荐