renderEvent завершается неудачно после вызова removeEvents - FullCalendar - PullRequest
1 голос
/ 11 января 2011

Я вполне уверен, что это ошибка. Как только я вызываю remove «removeEvents», никакие последующие добавления («renderEvent») не работают, а те, которые действуют так, как будто у них нет «липкости».

Если я сделаю следующее:

  1. Инициализировать календарь.
  2. Добавить событие A, используя $("#calendar").fullCalendar( 'renderEvent', newEvent, true);
  3. Удалить это событие, используя $("#calendar").fullCalendar( 'removeEvents', 12345);
  4. Добавить событие 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 появляться в массиве.

Решение будет выглядеть как удалить ПОСЛЕ всех добавлений:

  1. Добавить событие A
  2. Добавить событие B
  3. Удалить событие 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, все начинает действовать странно.

Помощь будет принята с благодарностью!

-Брайан

1 Ответ

1 голос
/ 11 января 2011

Я только что обновился с 1.4.9 до 1.4.10, очистил кэш и попробовал снова, и теперь похоже, что все работает правильно.

Надеюсь, это было.

-Brian

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...