Попытка получить clientEvents после вызова refetchEvents не возвращает никаких clientEvents - PullRequest
1 голос
/ 17 декабря 2011

У меня есть такой сценарий:

Календарь загружается изначально и показывает несколько событий, основанных на нескольких источниках событий.У меня также есть несколько выпадающих списков, которые позволяют пользователю фильтровать календарь на основе некоторых критериев.Но чтобы убедиться, что я всегда работаю с исходным набором событий, которые были загружены из источников событий, я вызываю вызов .fullCalendar ('refetchEvents') перед тем, как начать фильтрацию.Я делаю это, получая клиентские события (.fullCalendar ('clientEvents')).Но проблема у меня заключается в том, что когда я получаю клиентские события после того, как я делаю refreshEvents, я получаю 0 клиентских событий, хотя я могу видеть несколько событий в календаре в этот момент времени.Я что-то пропустил?Пожалуйста, сообщите.

Фрагмент кода:

$('#calendar').fullCalendar('refetchEvents'); //commenting this out, gives me the clientEvents
var calEvents = $('#calendar').fullCalendar('clientEvents');
alert(calEvents.length + " and " + $.isArray(calEvents)); //get nothing here after refetchEvents
if (ui.checked) {
    $.ajax({
    type: "GET",
    async: true,
    url: "/Case/CalendarFilterCriteria",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: { filterOptions: data, caseId: cavo.currentCaseId },
    success: function (response) {
        //alert($.isArray(response.eventIds));
        $.each(calEvents, function (index, value) {
        //alert(index + " and " + value.id);
            $('#calendar').fullCalendar('removeEvents', function (value) {
            var found = 0;
            $.each(response.eventIds, function (index, val) {
                console.log("value " + value.id + " val " + val.id);
                if (value.id === val.id) {
                    console.log("match found");
                    found = 1;
                    return false; //to break the inner .each loop
                }
            })
            console.log("remove " + !found);
            return !found; //if true, the event will be deleted from the calendar
        })
    });
}                        

1 Ответ

0 голосов
/ 17 августа 2012

Ваша проблема в том, что refetchEvents выполняет вызов ajax асинхронно.Это означает, что данные не обязательно были получены при вызове $('#calendar').fullCalendar('clientEvents').

...