Как я могу получить экземпляр fullcalendar v.4.2.0?

Итак, у меня есть экземпляр fullCalendar (v.4.2.0) на моей странице (загруженный/построенный на document.ready), и я хочу получить доступ к этому экземпляру fullCalendar в других функциях для динамического добавления событий.

Использование $('#calendar').fullCalendar('getView') показывает ошибку, что метод fullCalendar() не существует:

$(...).fullCalendar не является функцией

Как я могу получить доступ к этому экземпляру?

Код, который я использую для создания календаря, следующий:

var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
    plugins: [ 'timeGrid', 'dayGrid' ],
        defaultView: 'timeGridWeek', 
        height: 700,
        locale: 'pt',
        allDaySlot: false,
        handleWindowResize: true,
        events: [
            {
                title: 'Teste1', // a property!
                start: '2019-07-23 16:00', 
                end: '2019-07-23 17:00', 
                backgroundColor: '#fcba03',
                borderColor: '#fcba03',
            }
        ]
    });
calendar.render();

person Martinho    schedule 24.07.2019    source источник


Ответы (2)


Поскольку вы используете fullCalendar версии 4, он больше не написан как подключаемый модуль jQuery, поэтому синтаксис jQuery для доступа к методам использовать нельзя. Вместо этого просто обратитесь к вашей переменной calendar (которая, вероятно, должна иметь широкую область действия в вашем приложении — либо глобальную, либо легко доступную другим способом). Вы заметите, что ваш существующий код уже делает именно это, когда вызывает calendar.render();.

Кроме того, в конкретном случае метода «getView» это было заменено просто свойством view, которое ссылается на текущее представление.

Например (см. последнюю строку):

var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
    plugins: [ 'timeGrid', 'dayGrid' ],
        defaultView: 'timeGridWeek', 
        height: 700,
        locale: 'pt',
        allDaySlot: false,
        handleWindowResize: true,
        events: [
            {
                title: 'Teste1', // a property!
                start: '2019-07-23 16:00', 
                end: '2019-07-23 17:00', 
                backgroundColor: '#fcba03',
                borderColor: '#fcba03',
            }
        ]
    });

calendar.render();

var vw = calendar.view; //get the current view

Справочная документация

Документация по свойству view

Руководство по обновлению с версии 3 до версии 4

person ADyson    schedule 24.07.2019

person    schedule
comment
насколько это актуально, не говоря уже о том, что это принятый ответ? OP явно задает вопрос о fullCalendar 4.2, но этот синтаксис jQuery действителен только в fullCalendar 3 или ниже. Подробности см. на странице fullcalendar.io/docs/upgrading-from-v3. Я вообще не понимаю, как это решит проблему в вопросе. Не говоря уже о том, что 99% кода не имеют никакого отношения к упомянутой конкретной проблеме — метод getView (который вызывал ошибку) вообще не упоминается в этом примере! - person ADyson; 24.07.2019