выбор нового месяца из выпадающего меню очищает выпадающий список даты в Vuejs - PullRequest
0 голосов
/ 13 января 2020

У меня есть три раскрывающихся меню, представляющих дату, месяц и год рождения:

<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 не меняется! В чем здесь проблема?

...