Обновить v-модель из v-выберите, если элементы обновлены

#javascript #vue.js

#javascript #vue.js

Вопрос:

Шаблон Vue:

 <v-flex>
 <v-select
   label="Day"
   :items="daysInMonth"
   v-model="selectedDay"
  />
</v-flex>
<v-flex>
  <v-select
   label="Month"
   :items="months"
   v-model="selectedMonth"
  />
</v-flex>
<v-flex>
  <v-select
   label="Years"
   :items="years"
   v-model="selectedYear"
  />
</v-flex>
 

Я работаю над компонентом выбора даты v-select . Он работает нормально, но я не понимаю поведения, когда у меня есть случай для оценки количества дней в месяц / год.

So daysInMonth — это вычисляемое свойство, которое вернет количество дней, заданное selectedMonth amp; selectedYear .

Примерный случай, daysInMonth есть [1, 2, 3, ..., 29] и selectedDay есть 29 , но сразу после новой оценки daysInMonth , например, скажем [1, 2, 3, ..., 28] , selectedDay значение моих данных сохраняется, т.Е. Все еще отображается 29 в инструментах отладки Vue, но не в пользовательском интерфейсе.

Чего мне здесь не хватает? Я хочу, чтобы значение selectedDay обновлялось, если оно не имеет значения, существующего в элементах, т.Е. daysInMonth .

Спасибо!

Ответ №1:

Вы можете использовать watch daysInMonth :

 watch: {
  daysInMonth(val) {
    this.selectedDay = val.includes(this.selectedDay) ? this.selectedDay : 1;
  }
}
 

Это приведет к сбросу значения selectedDay на 1, если его нет в новом daysInMonth массиве.