Я создал календарь, в котором отображается таблица дат и соответствующий день, и я хочу добавить функцию переключения между месяцами. Метод, который я здесь сделал, «работает». Проходит месяц, когда я нажимаю кнопку, которая выполняет эту функцию. но только один раз, и это потому, что selectedDate не обновляется, поэтому, когда я пытаюсь отладить, используя console.log (selectedDate), который я закомментировал, он все равно печатает сегодняшнюю дату .. Надеюсь, кто-то может мне помочь здесь

methods: {
  prevMonth() {
    var selectedDate = moment(new Date());
    let futureMonth = moment(selectedDate.subtract(1, 'month')).startOf('month')
        selectedDate = futureMonth;
    //return console.log(selectedDate)
    this.days = [...Array(futureMonth.daysInMonth())].map((_, i) => {
      return {
        date: futureMonth.clone().add(i, "day"),
        workhours: Math.floor(Math.random()*10),
        overtime: Math.floor(Math.random()*10),
        flextime: 0,
        sickness: 0,
        vacation: 0,
      }

    })
  }
}
0
Tobias Rathkjen Nørbygaard 15 Сен 2020 в 11:41

1 ответ

Лучший ответ

Вы устанавливаете selectedDate на moment(new Date()) каждый раз, когда запускаете этот метод. Таким образом, он всегда возвращается на месяц назад, исходя из сегодняшнего дня.

Вам нужно сохранить состояние selectedDate, что-то вроде этого должно работать:

data() {
  return {
    selectedDate: undefined
  }
},
mounted() {
  this.selectedDate = moment(new Date())
},
methods: {
  prevMonth() {
    let futureMonth = moment(this.selectedDate.subtract(1, 'month')).startOf('month')
    this.selectedDate = futureMonth;
    ......
    })
  }
}
0
S.Visser 15 Сен 2020 в 08:54