Вы абсолютно правы по этому поводу, и я уже подал ошибку команде разработчиков по этому поводу.
http://code.google.com/p/fullcalendar/issues/detail?id=920&can=1&sort=-id&colspec=ID%20Type%20Status%20Milestone%20Summary%20Stars
Единственный способ сделать это сейчас - использовать событие viewDisaply.
http://arshaw.com/fullcalendar/docs/display/viewDisplay/
А внутри этого события viewDisapy вызвать событие загрузки
http://arshaw.com/fullcalendar/docs/event_data/loading/
Единственный способ, которым я могу думать сейчас, это сделать javascript setTimeout
var t=setTimeout( FUNCTION , TIME IN MS);
внутри проверки тайм-аута isLoading, и если true, тогда снова установите тайм-аут.
Или просто использовать setTimeout внутри функции viewDisplay до 500мс / 1секунда? чтобы создать желаемый эффект задержки, который вы ищете, и по истечении этого времени вы можете добавить нужный источник, используя addEventSource
http://arshaw.com/fullcalendar/docs/event_data/addEventSource/
Существует еще одна опция, встроенная в календарь.
http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/
Этот параметр говорит плагину для кэширования всех событий. так что если вы нажмете кнопку «следующий / следующий / предыдущий / предыдущий» Он только дважды вызывает AJAX. Потому что предыдущие два месяца загружены и кэшированы.
isclicking: D не существует, потому что мы не знаем, будет ли пользователь щелкать снова или нет ..: D, поэтому мы должны ожидать этого только путем установки setDelay, если пользователь дважды щелкнет по следующему месяцу в течение 1 секунды.
Так что, если кто-то захочет пойти на 6 месяцев раньше, он быстро нажмет следующие кнопки, и мы можем обнаружить это следующим образом.
//global var
var clicks = 0;
var isClicking = false;
//jquery on load and calender initialisation.
loading: function(bool) { if (bool)
{
clicks=0; //The source has loaded completely - user stopped clicking
}
else
{
//Still loading
}
},
viewDisplay: function(view) {
click += 1; //user has clicked- and this will grow each time he clicks before the ajax finishes.
if (click > 1) //Yea he is clicking and clicking.. so lets stop calling ajax.
{
$('#calendar').fullCalendar( 'removeEventSource', '/diaryFeed.aspx' ); //Remove the source so it stops firing on each click
setTimeout ( $('#calendar').fullCalendar( 'addEventSource', '/diaryFeed.aspx' ); , 1000 ); //Add the source again and it will load and fire loading(true) and reset our click counter
}
//Handle other view changes like month/week and date changes
},