Я создаю селектор диапазона дат, и хотя это работает, я чувствую, что делаю его более сложным, чем нужно.Есть ли более элегантный способ написать это?
Возможно, использовать вычисленные значения или часы?
<template>
<form>
<select @change="rangeSelection">
<option
v-for="(option, key) in rangeOptions"
:key="key"
:value="key">
{{option.display}}
</option>
</select>
</form>
</template>
<script>
import moment from 'moment';
export default {
name: 'DateRangeChooser',
data: () => {
return {
selectedRange: "last7Days",
startDate: moment().subtract(8, 'days'),
endDate: moment().subtract(1, 'days'),
rangeOptions: {
last7Days: {
display: 'Last 7 Days',
startDate: moment().subtract(8, 'days'),
endDate: moment().subtract(1, 'days')
},
lastWeek: {
display: 'Last Week',
startDate: moment().startOf('week').subtract(1, 'week'),
endDate: moment().endOf('week').subtract(1, 'week')
},
last30days: {
display: 'Last 30 days',
startDate: moment().subtract(31, 'days'),
endDate: moment().subtract(1, 'days')
}
}
}
},
methods: {
rangeSelection: function(e){
this.endDate = this.rangeOptions[e.currentTarget.value].endDate;
this.startDate = this.rangeOptions[e.currentTarget.value].startDate;
}
}
};
</script>