Подтвердить что ты не робот

Слушатель для "изменения даты" в FullCalendar?

Есть ли способ присоединить слушателя к FullCalendar, который будет срабатывать при каждом изменении текущей просматриваемой даты, т.е. если вы находитесь в режиме просмотра "Месяц", переход к следующему месяцу вызовет событие, передающее дату для первого дня месяца, и то же самое для смены недель в представлении недели, дня в дне и т.д.

Единственный открытый слушатель, который был бы близок к этому, - это обратный вызов dayClick, но это бесполезно, потому что он срабатывает только тогда, когда пользователь нажимает на фактическую дневную ячейку, а не, например, когда на панели заголовка нажимаются элементы управления Next/prev/today.

Я хочу, чтобы эта функция могла синхронизировать текущий просматриваемый месяц в FullCalendar с компонентом DateJPicker ExtJS, поэтому, если просматриваемый месяц изменяется в FullCalendar, то Datepicker обновляется, чтобы показать тот же месяц. (вспомните пользовательский интерфейс Календаря Google с его "мини-календарем" в верхнем левом углу, который является указателем даты).

4b9b3361

Ответ 1

Билл,

Я знаю, что этот вопрос довольно древний, но мне нужно решение и подумал, что я разместил его здесь для других. Я сам решил проблему, присоединив событие viewDisplay к моему календарю (это событие было удалено в v2 из FullCalendar, viewRender).

$("#calendar").fullCalendar({
    viewDisplay: function (element) {

    }
});

Как только у вас есть доступ к элементу, вы можете получить дату с помощью element.start или element.visStart. Если вы находитесь в режиме просмотра месяца, начните с первого дня месяца, который вы просматриваете, visStart даст вам первый видимый день месяца.

Ответ 2

Вот как я это сделал:

$("#calendar").fullCalendar({

viewRender: function(view, element){
        var currentdate = view.intervalStart;
        $('#datepicker').datepicker().datepicker('setDate', new Date(currentdate));
    }

    });

В представлении месяца intervalStart вернет первый день месяца, отображаемого на FullCalendar, а не первый видимый день, который обычно является днем ​​ближе к концу предыдущего месяца.

Ответ 3

Для FullCalendar v4 (последняя версия на момент написания) правильными обратными вызовами являются:

viewSkeletonRender (документы)

function( info )

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

dateRender (документы)

function( info )

Это срабатывает после обратного вызова viewSkeletonRender, но до EventRender обратные вызовы.

Ответ 4

Для Fullcalendar V4,

document.getElementById('my-button').addEventListener('click', function() {
  var date = calendar.getDate();
  alert("The current date of the calendar is " + date.toISOString());
});