Я вполне уверен, что это ошибка. Как только я вызываю remove «removeEvents», никакие последующие добавления («renderEvent») не работают, а те, которые действуют так, как будто у них нет «липкости».
Если я сделаю следующее:
- Инициализировать календарь.
- Добавить событие A, используя
$("#calendar").fullCalendar( 'renderEvent', newEvent, true);
- Удалить это событие, используя
$("#calendar").fullCalendar( 'removeEvents', 12345);
- Добавить событие B, используя
$("##calendar").fullCalendar( 'renderEvent', newEvent2, true);
Ни одно из событий A или B не появляется! Оба события имеют разные идентификаторы, и должно произойти, если событие A будет удалено, но событие должно появиться B. Если я уберу это единственное «removeEvent», то появятся оба события A и B (даже если удаление предназначено только для идентификатора события A).
Даже если я перерисовываю события после шага 4, используя $("#calendar").fullCalendar( 'rerenderEvents' );
, событие B все равно не отображается.
Более интересно то, что это не похоже на проблему «рендеринга», поскольку, если я извлекаю все события, используя $("#calendar").fullCalendar( 'clientEvents', ...);
, в массиве возвращаемых событий не отображается событие A или B, где при удалении «removeEvent» позволит обоим событиям A и B появляться в массиве.
Решение будет выглядеть как удалить ПОСЛЕ всех добавлений:
- Добавить событие A
- Добавить событие B
- Удалить событие A
Который сохраняет событие B, но в моем приложении у меня есть функция перетаскивания, и пользователь может «добавлять» новые события в любое время! Поэтому я обнаружил, что, когда я вызываю «removeEvent», а затем перетаскивая новое событие в календарь, «липкость» события исчезает, поэтому изменение месяца не удержит добавленное событие.
Вот мой код:
$('#calendar').fullCalendar({
theme: true,
header: {
left: "prev,next today",
center: 'title',
right: "today prev,next"
},
height: 400,
selectable: true,
selectHelper: true,
unselectAuto: false,
select: calendarSelect,
droppable: true,
drop: calendarDrop,
events:getCalendarData,
eventClick:calendarEventClicked
});
var newEvent = {
id: 12345,
period: "Full-day",
title: "Full-day",
start: new Date(2010, 11, 02),
type: "Regular",
billable: true,
className: "",
changedThisSession: true
};
$("#calendar").fullCalendar( 'renderEvent', newEvent, true);
$("#calendar").fullCalendar( 'removeEvents', 12345);
var newEvent2 = {
id: 4433,
period: "Full-day",
title: "Full-day",
start: new Date(2010, 11, 03),
type: "Regular",
billable: true,
className: "",
changedThisSession: true
};
$("#calendar").fullCalendar( 'renderEvent', newEvent2, true);
Даже если этот код удаляет событие с идентификатором 12345, событие ДРУГОЕ (идентификатор 4433) также не отображается. Удаление строки ... "removeEvents" ... приводит к отображению обоих событий.
Опять же, я могу добавлять новые события, перетаскивать их и т. Д., И это прекрасно работает. Как только однажды вызывается removeEvents, все начинает действовать странно.
Помощь будет принята с благодарностью!
-Брайан