需求:開始時時間大於結束時間,結束時間要大於等於結束時間兩小時。
使用watch監聽開始,結束時間
<template>
<el-form label-width="100px">
<el-form-item label="開始時間">
<el-date-picker
v-model="value1"
type="datetime"
placeholder="選擇日期時間"
align="right"
>
</el-date-picker>
</el-form-item>
<el-form-item label="結束時間">
<el-date-picker
v-model="value2"
type="datetime"
placeholder="選擇日期時間"
align="right"
>
</el-date-picker>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
value1: new Date(),
value2: new Date(new Date().getTime() + 1000 * 3600 * 2),
};
},
watch: {
value1: {
handler(newTime, oldTime) {
if (this.value2 != "" && this.value2 != null) {
if (new Date(this.value2).getTime() <= newTime.getTime()) {
this.value2 = new Date(newTime.getTime() + 1000 * 3600 * 2);
this.value1 = newTime;
} else {
this.value1 = newTime;
}
} else {
this.value2 = new Date(newTime.getTime() + 1000 * 3600 * 2);
this.value1 = newTime;
}
},
immediate: true,
},
value2: {
handler(newTime, oldTime) {
if (this.value1 != "" && this.value2 != null) {
if (new Date(this.value1).getTime() >= newTime.getTime()) {
this.value1 = new Date(newTime.getTime() - 1000 * 3600 * 2);
this.value2 = newTime;
} else {
this.value2 = newTime;
}
} else {
this.value1 = new Date(newTime.getTime() - 1000 * 3600 * 2);
this.value2 = newTime;
}
},
immediate: true,
},
},
};
</script>
immediate表示在watch中首次綁定的時候,是否執行handler方法,值為true則表示在watch中聲明的時候,就立即執行handler方法,值為false,則和一般使用watch一樣,在數據發生變化的時候才執行handler。
在handler方法中,不能以箭頭函數定義,不然this不能指向vue實例。
