Как применить свойство selectOverlap к просмотру недели и дня, но не к просмотру полного календаря за месяц - PullRequest
0 голосов
/ 11 июля 2019

Я использую плагин fullcalendar и просто хотел спросить, как я могу применить свойство selectOverlap: false к просмотру недели и дня, но не к представлению месяца.

Например, если я изменю свое представление с недели намесяц, тогда selectOverlap должно быть истинным или иным образом, если я перехожу с месяца на любое другое представление selectOverlap должно быть ложным, но имейте в виду, я не перезагружаю всю страницу.

Это я хочу, потому что если у меня естьнекоторые данные в представлении месяца, и я пытаюсь выбрать месяц, который должен быть выбран, и здесь он не работает, потому что перекрытие рассматривается для всего месяца.

Так что я хочу, чтобы он был выбран в представлении месяца и работал какэто предполагается делать в режиме просмотра недели и дня (перекрытие невозможно).

Я попытался добавить представление в локальное хранилище и поместил условие

selectOverlap: localStorage.getItem('viewName') === "month" ? true : false

, так что это работает либо для просмотра месяца, либо для просмотра недели и дня, но не для обоих

selectOverlap: localStorage.getItem('viewName') === "month" ? true : false

Здесь это localStorage.getItem('viewName') дает правильное имя представления, но поскольку эти свойства применяются только во время загрузки страницы, я не могу изменить их при изменении вида, я хочу, чтобы свойство selectOverlap было истиннымдля просмотра по месяцам и false для оставшейся части просмотра без повторной загрузки страницы.

1 Ответ

0 голосов
/ 11 июля 2019

Вы упомянули, что

, поскольку эти свойства применяются только во время загрузки страницы, это не возможно для меня изменить при изменении вида

Это правда, но уже есть способ избежать этой проблемы. Согласно документации для selectOverlap вы можете предоставить функцию обратного вызова вместо фиксированного значения. Затем он будет выполняться fullCalendar каждый раз, когда происходит наложение, поэтому он может динамически оценивать ситуацию в этот момент.

Таким образом, вы можете спросить fullCalendar о текущем представлении и принять решение на его основе. Например:

selectOverlap: function(event) {
  return ($('#calendar').fullCalendar('getView').name == "month");
}

Это вернет true всякий раз, когда типом представления является "месяц", что позволяет продолжить перекрытие.

...