fullcalendar 4, обратный вызов, когда календарь полностью отображается - PullRequest
0 голосов
/ 05 июня 2019

Полная версия календаря 3 имела функцию обратного вызова, которая запускалась бы после отображения всех событий. Я бы использовал это:

eventAfterAllRender: function( view ) { 
    load_call_list();
}

load_call_list - это функция, которую я сделал для подсчета определенных событий в зависимости от их статуса. Он также запрашивает мою базу данных для другой информации.

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

<script>
document.addEventListener('DOMContentLoaded', function() {
  var calendar_full = document.getElementById('calendar_full');
  var calendar = new FullCalendar.Calendar(calendar_full, {
        height: 700,
        selectMirror: true,
        events: {
            url: 'ajax_get_json.php?what=location_appointments'
        },
  ....

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

Я думал об использовании eventrender, но я не хочу, чтобы load_call_list запускался каждый раз, поскольку моя база данных тоже запрашивалась с помощью этой функции.

Я пытался использовать jquery $ (document) .ready (function () {}), но он срабатывает до того, как события были отрисованы.

Какой-нибудь совет, как этого добиться?

1 Ответ

0 голосов
/ 06 июня 2019

Хорошо, так как насчет этого? Я могу использовать функцию загрузки. Когда календарь завершит загрузку, я могу вызвать функцию load_call_list. Я использую переменную bool, чтобы не запускать ее каждый раз, когда календарь загружается без обновления страницы (например, при циклическом переключении по месяцам или неделям).

Когда страница загружается впервые, у меня есть переменная initial_load = true. Когда календарь завершит «загрузку», если это правда, тогда я вызову мою функцию и установлю для initial_load значение false, чтобы оно не просто сработало, как я объяснял ранее.

<script>
//set initial_load so when the calendar is done loading, it'll get call list info
var initial_load = true;

document.addEventListener('DOMContentLoaded', function() {


    var calendar1 = document.getElementById('calendar_mini');
    var calendar_mini = new FullCalendar.Calendar(calendar1, {
       ....
       ....
       loading: function(bool) {

        if (bool) {
            $('.loader').show();
            $('#show_cancelled_appts').hide();
            $('#show_rescheduled_appts').hide();
            $('#print_calendar').hide();
        } else {
            $('.loader').hide();
            $('#show_cancelled_appts').show();
            $('#show_rescheduled_appts').show();
            $('#print_calendar').show();

            //once it's done loading, load call list with current date stuff; set 
            initial_load = false so it doesn't keep loading call list when calendar changes while cycling months/weeks/etc
                var today = moment().format('YYYY-MM-DD');
                if (initial_load) {
                    load_call_list(today);
                    initial_load = false;
                }


        }
 },

Это действительно работает! Мысли об этом? Это нормально, программирование? Я не вижу никаких недостатков на данный момент.

...