Я создаю форму DOB.
Я использую VueJS в форме. Сначала пользователь должен указать дату месяца, чтобы день отображался в соответствии с количеством дней в соответствующем месяце.
Я использую filter()
, но проблема в том, что this
внутри filter()
не определено. Как это исправить?
new Vue ({
el: '.app',
data: {
months: [
{month: 'January', days: 31},
{month: 'February', days: 28},
{month: 'March', days: 31},
{month: 'April', days: 30},
{month: 'May', days: 31},
{month: 'June', days: 30},
{month: 'July', days: 31},
{month: 'August', days: 31},
{month: 'September', days: 30},
{month: 'October', days: 31},
{month: 'November', days: 30},
{month: 'December', days: 31},
],
selectedMonth: []
},
computed: {
filterDays() {
return this.months.filter(function(value) {
return value.month === this.selectedMonth;
});
}
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div class="app">
<select id="dobd">
<option v-for="day in filterDays[0].days" :value="day">{{ day }}</option>
</select>
</div>
Я знаю, что использование глобальной переменной может быть решением, но я хочу использовать selectedMonth
внутри data()
из-за своих собственных потребностей.
days
теперь не определено :(Это потому, что у вас не было действительного
this.selectedMonth
. Смотрите демо в ответе (только что добавлено).