如何使用手表禁用遍历数组的可用时间?
How to disable available times looping through an array using watch?
我正在 Vue CLI 中创建一个预订应用程序。我决定使用 vue-ctk-date-time-picker 来选择日期和时间。我打算根据日期停用一些时间,但我 运行 有问题。我的代码只禁用数组中指定的最后一个日期的时间并忽略其余时间。
我已经根据日期将时间数组记录到控制台,它打印出正确的值。除了那个控制台没有显示任何错误。
<VueCtkDateTimePicker only-date v-model="date"/>
<VueCtkDateTimePicker only-time :disabled-hours="disabledHours"/>
date: null,
disabledHours: [],
testArray: [
{
date: "2019-05-28",
times: ["10", "11"]
},
{
date: "2019-05-29",
times: ["10", "11", "12"]
}
]
watch: {
date(newVal, oldVal) {
for (let i = 0; i < this.testArray.length; i++) {
if (newVal == this.testArray[i].date) {
for (let j = 0; j < this.testArray[i].times.length; j++) {
this.disabledHours.push(this.testArray[i].times[j]);
}
} else {
this.defaultHours();
}
}
}
},
created() {
this.defaultHours();
}
defaultHours() {
this.disabledHours = ["00","01","02","03"]
}
如果日期是 "2019-05-28"
,那么我预计禁用时间为 10 点和 11 点。
如果日期是 "2019-05-29"
,那么我希望禁用时间为 10、11 和 12 等
但是发生的事情是,它采用数组中指定的最后一个日期并且只禁用它的小时数。
您发布的代码将始终遍历 testArray
中的所有条目并对每个条目采取一些操作。我认为你想要的行为是让代码只对匹配的条目采取行动,如果没有条目匹配则默认。有很多方法可以实现这种行为,但一种方法如下
date(newValue) {
const matched = testArray.find(entry => entry.date === newValue);
if (matched) {
this.disabledHours = matched.times;
} else {
this.defaultHours();
}
}
我正在 Vue CLI 中创建一个预订应用程序。我决定使用 vue-ctk-date-time-picker 来选择日期和时间。我打算根据日期停用一些时间,但我 运行 有问题。我的代码只禁用数组中指定的最后一个日期的时间并忽略其余时间。
我已经根据日期将时间数组记录到控制台,它打印出正确的值。除了那个控制台没有显示任何错误。
<VueCtkDateTimePicker only-date v-model="date"/>
<VueCtkDateTimePicker only-time :disabled-hours="disabledHours"/>
date: null,
disabledHours: [],
testArray: [
{
date: "2019-05-28",
times: ["10", "11"]
},
{
date: "2019-05-29",
times: ["10", "11", "12"]
}
]
watch: {
date(newVal, oldVal) {
for (let i = 0; i < this.testArray.length; i++) {
if (newVal == this.testArray[i].date) {
for (let j = 0; j < this.testArray[i].times.length; j++) {
this.disabledHours.push(this.testArray[i].times[j]);
}
} else {
this.defaultHours();
}
}
}
},
created() {
this.defaultHours();
}
defaultHours() {
this.disabledHours = ["00","01","02","03"]
}
如果日期是 "2019-05-28"
,那么我预计禁用时间为 10 点和 11 点。
如果日期是 "2019-05-29"
,那么我希望禁用时间为 10、11 和 12 等
但是发生的事情是,它采用数组中指定的最后一个日期并且只禁用它的小时数。
您发布的代码将始终遍历 testArray
中的所有条目并对每个条目采取一些操作。我认为你想要的行为是让代码只对匹配的条目采取行动,如果没有条目匹配则默认。有很多方法可以实现这种行为,但一种方法如下
date(newValue) {
const matched = testArray.find(entry => entry.date === newValue);
if (matched) {
this.disabledHours = matched.times;
} else {
this.defaultHours();
}
}