在调用refetchEvents之后尝试获取clientEvents不会返回任何clientEvents

时间:2011-12-17 17:03:06

标签: jquery-plugins fullcalendar

我有这种情况:

日历最初加载并显示基于多个事件源的一系列事件。我还有一些下拉框,允许用户根据某些条件过滤日历。但是为了确保我总是处理从事件源加载的初始事件集,我在开始过滤之前调用.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 :(得分:0)

您的问题是refetchEvents异步进行ajax调用。这意味着当您致电$('#calendar').fullCalendar('clientEvents')时,未必检索到数据。