Bootstrap

【el-date-picker】踩坑记,回显不显示及赋默认值不回显问题

关于日期组件,短短的一天已经遇到两个坑了
平时都是拿来即用,这次真让我印象深刻了

bug1:保存后回显的时候出不来

正常配置一个列表加一个弹窗,新增修改共用一个弹窗

日期组件如果有开始和结束两块,一般后端会给你两个字段去接值。
v-model绑的是数组,这个数组可以自定义,就自己用,不用传给后端的
在change事件里给后端要的两个字段赋值

 <el-date-picker
                  v-model="form.dateTime"
                  @change="dataChange"
                  type="daterange"
                  value-format="yyyy-MM-dd"
                  range-separator="-"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                >
                </el-date-picker>

dateTime可以单独定义,我这是因为涉及到必填项了,所以放在表单里

  form: {
        dateTime: [],
      },
      //给后端要的两个字段赋值
  dataChange(val) {    
      if (val && val.length > 0) {
        this.form.startDate = val[0];
        this.form.endDate = val[1];
      }
    },

然后就说回显的事了,普通的赋值对日期组件不起作用,直接上this.$set

 this.$set(this.form, "dateTime", [
          "" + row.startDate + "",
          "" + row。endDate + "",
        ]);

bug2
一样的日期组件,但是需求是刚开始的时候给开始日期赋当天的默认值

我又卡住了, s e t 都不好使了,就是不触发,网上搜到一个办法,说不用 set都不好使了,就是不触发,网上搜到一个办法,说不用 set都不好使了,就是不触发,网上搜到一个办法,说不用set,用push追加,我也试了,还是不行,后来才发现我掉坑里去了,需求说只要开始日期赋值,我就只考虑开始日期了

其实日期范围组件,开始和结束都要有值

我给结束日期赋空值,难怪怎么都折腾不出来,望大家不踩这个坑

   this.$set(this.form.dateTime, 0, formdate);
   this.$set(this.form.dateTime, 1, formdate);

this.form.dateTime.push(formdate);
this.form.dateTime.push(formdate);

写两遍一样的挺奇怪的,就用$set吧

;