У меня есть три раскрывающихся меню, представляющих дату, месяц и год рождения:
<input-select
id="dateOfBirth"
label="Day"
:name="'dateOfBirth' | hashcode"
:option-default="select dat"
:option-list="birthDates"
:v-model="birthdate"
:value="birthdate"</input-select>
<input-select
id="monthOfBirth"
label="Month"
:name="'monthOfBirth' | hashcode"
:option-default="select month"
:option-list="birthMonth"
v-model="birthmonth"
:value="birthMonth"></input-select>
<input-select
id="yearOfBirth"
label="Year"
:name="'yearOfBirth' | hashcode"
:option-list="birthYears"
:option-default="select year"
v-model="birthyear"
:value="birthyear"
></input-select>
Я хочу, чтобы значения в массиве birthDates (который показывает даты в раскрывающемся меню даты) были динамическими c и быть выбранным в зависимости от месяца (например, в ноябре было 28 дней, а у января - 31), чтобы сделать это, я написал следующий фрагмент кода:
data: function () {
return {
//initiating the array which would show the dates
birthdate:[],
numDates:''
...
methods: {
//the function that would repopulate the birthdate[] array
birthdateValueList(){
//erasing the values of the existing array
this.birthdates = []
//adding new values
let i = 1;
//numDates is defined in another function based on the month selected, please see below
while (i <= this.numDates){
this.birthdates.push(i);
i ++;
}
...
// watching the birthmonth drop down and setting the number days for that month
// this is where we define numDates
watch: {
birthmonth:function(){
if(this.birthmonth === "April" || this.birthmonth === "June" || this.birthmonth === "September" || this.birthmonth === "November"){
this.numDates = 30
}else if (this.birthmonth === "February" && this.leapYear){
this.numDates = 29
}
else if(this.birthmonth === "February" && !this.leapYear){
this.numDates = 28
}
else {
this.numDates = 31
}
...
// and then a computed property to do some formatting and returning the final array
computed: {
birthDates: function(){
var list = JSON.parse(JSON.stringify(this.birthdates));
var birthdateDates = this.generateNewList(list);
return birthdateDates;
},
Этот код работает отлично, и все, кроме проблема в том, что когда я выбираю новый месяц, выпадающий список очищается и ничего не отображается, хотя в консоли я вижу, что его значение birthdate
не меняется! В чем здесь проблема?