FullCalendar вставляет повторяющиеся события даже при удалении всех событий

#fullcalendar

#fullcalendar

Вопрос:

FullCalendar отлично работает, кроме 1 проблемы, с которой я столкнулся. Кажется, что в monthview div, который загружает календарь в режиме monthview, отображаются загруженные повторяющиеся праздники. Это происходит, когда я добавляю событие, а затем вызываю функцию привязки календаря, которая в основном выполняет приведенный ниже код.

У кого-нибудь еще была подобная проблема? Похоже, что функция ‘removeEvents’ работает нормально с потоком данных, который поступает из внутренней базы данных, но, похоже, оставляет даты Google. Когда вызывается addEventSource, он снова добавляет те же события.

 var googleUkHolidaysFeed = {
    url: 'http://www.google.com/calendar/feeds/uk__en@holiday.calendar.google.com/public/basic',
    cache: true,
    color: "green"    
};

 $.getJSON(url, {}, function (data) {

        $('#dayview').fullCalendar('removeEvents');
        $('#dayview').fullCalendar('addEventSource', data);        

        if ($("#monthview")[0]) {
            $('#monthview').fullCalendar('removeEvents');
            $('#monthview').fullCalendar('addEventSource', data);
            $('#monthview').fullCalendar('addEventSource', googleUkHolidaysFeed);
        }
    });
  

Ответ №1:

Я сам решил эту проблему. Необходимо вызвать ‘removeEvents’, за которым следует ‘removeEventSource’, например:

(‘data’ — это массив событий в формате json, предоставляемый приложением, ‘googleCalendarUkHolidayFeed’ — это канал URL от Google).

 var googleCalendarUkHolidayFeed = {
   url: "http://www.google.com/calendar/feeds/bla..."       
}    

$('#dayview').fullCalendar('removeEvents');    
$('#dayview').fullCalendar('addEventSource', data);   

if ($("#monthview")[0]) {
    // remove events and re-add event source to reflect search/non-search
    $('#monthview').fullCalendar('removeEvents');  

    $('#monthview').fullCalendar('removeEventSource', googleCalendarUkHolidayFeed);
    $('#monthview').fullCalendar('removeEventSource', data);        

    $('#monthview').fullCalendar('addEventSource', googleCalendarUkHolidayFeed);
    $('#monthview').fullCalendar('addEventSource', data);        
}