События не отображаются при загрузке страницы - PullRequest
4 голосов
/ 31 мая 2011

Я использую Fullcalendar с помощью json, и происходит что-то действительно странное, и это убивает меня! Не могу найти обходной путь для этого.

У меня есть свой календарь под вкладкой. Когда я нажимаю на эту вкладку, отображается сетка календаря, но без событий. Если я нажму на календарь в следующем месяце, а затем вернусь в предыдущий месяц, все события будут отображаться правильно!

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

Вот как я называю календарь:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: false,
        events: "../events_calendar.php",
        loading: function(bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        }
    }); });

Есть идеи здесь ??

Спасибо.

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Ваша проблема может быть связана с тем, что FullCalendar выполняет асинхронные запросы (это означает, что календарь может загружаться ДО того, как данные будут возвращены).Итак, измените его, чтобы сделать синхронные запросы.

Вместо этого

    $(document).ready(function() {
        $('#calendar').fullCalendar({
            editable: false,
            events: "../events_calendar.php",
            loading: function(bool) {
                if (bool) $('#loading').show();
                else $('#loading').hide();
            }    
    }); });

Используйте что-то вроде этого:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: false,
        eventSources: [
        {
            url: '../events_calendar.php',
            async: false // No longer asynchronous
        }
    ],
        loading: function(bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        }
    }); });

Сравните с примером, найденным наhttp://arshaw.com/fullcalendar/docs/event_data/events_json_feed/

1 голос
/ 31 мая 2011

При загрузке страницы может возникнуть проблема со скрытым каландром.

Так что вы можете попытаться повторно отрендерить событие http://arshaw.com/fullcalendar/docs/event_rendering/rerenderEvents/

.fullCalendar( 'rerenderEvents' )

или

Чтобы убедиться, что события в порядке, вы должны подключить refetchEvent http://arshaw.com/fullcalendar/docs/event_data/refetchEvents/

.fullCalendar( 'refetchEvents' )

Оба эти события должны быть вызваны, когда календарь показывает и готов к примеру, но не раньше, так как он может иметьта же проблема.

и

Я думаю, что где-то уже была проблема с этим - но она могла бы быть решена в самой новой версии.Но я не могу найти это сейчас.Попробуйте поискать ошибки в службе поддержки

http://code.google.com/p/fullcalendar/issues/list?can=1&q=

Кроме этого вам придется попытаться настроить способ загрузки календаря и т. Д ...

0 голосов
/ 04 июня 2011

У меня была такая же проблема (см. Мои комментарии к исходному сообщению), и выяснил почему. мои события json были такими, и они прекрасно воспроизводились, если их не называть ajax (то есть json - это значение параметров 'events'):

 [{id:2317,title:"test",start:"2011-06-08 09:00:00.0",end:"2011-06-08 11:00:00.0",allDay:false,url:"log/show/2317",backgroundColor: 'green'}]

Однако он не работает при вызове через ajaxed. чтобы это работало, поместите имена свойств вашего json в двойные кавычки "...". Будьте осторожны, не используйте одинарные кавычки, это тоже не работает. Мой подмененный JSON становится:

[{"id":2317,"title":"test","start":"2011-06-08 09:00:00.0","end":"2011-06-08 11:00:00.0","allDay":false,"url":"log/show/2317","backgroundColor": "green"}]

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...