el-date-picker設置可選范圍picker-options需要注意的事項,要不然可能會報undefined的錯誤


1、首先來看看官網的例子

<template>
  <div class="block">
    <el-date-picker
      v-model="value1"
      align="right"
      type="date"
      placeholder="選擇日期"
      :picker-options="pickerOptions">
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        pickerOptions: {
          disabledDate(time) {
            return time.getTime() > Date.now();
          },
        },
        value1: '',
      };
    }
  };
</script>

2、如果是引用其他數據來做限制的話,就需要稍微改變一下

<script>
  export default {
    data() {
      return {
        pickerOptions: {
          disabledDate:(time)=> {
            return time.getTime() < this.startTime.getTime()||time.getTime()>this.endTime.getTime();
          },
        },
        value1: '',
        startTime:new Date(),
        endTime:new Date(),
      };
    }
  };
</script>        

3、錯誤重現

(1)

<script>
  export default {
    data() {
      return {
        pickerOptions: {
          disabledDate(time) {
            return time.getTime() < this.startTime.getTime()||time.getTime()>this.endTime.getTime();
          },
        },
        value1: '',
        startTime:new Date(),
        endTime:new Date(),
      };
    }
  };
</script>    

上圖錯誤

[Vue warn]: Error in render: "TypeError: Cannot read property 'startTime' of undefined"

(2)

<script>
  export default {
    data() {
      return {
        pickerOptions: {
          disabledDate(time) {
            return time.getTime() < startTime.getTime()||time.getTime()>endTime.getTime();
          },
        },
        value1: '',
        startTime:new Date(),
        endTime:new Date(),
      };
    }
  };
</script> 

上圖錯誤[Vue warn]: Error in render: "ReferenceError: startTime is not defined"

 

4、所以

(1)

pickerOptions: {
          disabledDate(time) {
            return time.getTime() > Date.now();
          },
        },

這種形式適合不引用其他定義的數據。

(2)

 pickerOptions: {
          disabledDate:(time)=> { return time.getTime() < this.startTime.getTime()||time.getTime()>this.endTime.getTime(); }, },

需要引用定義的數據的話用這種形式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM