FullCalendar не перерисовывается после updateEvents - PullRequest
0 голосов
/ 13 сентября 2018

Моя цель - иметь 2 разных элемента FullCalendar, которые будут синхронизированы.Я не делаю ЛЮБЫХ сетевых вызовов, просто клиентские массивы на этом этапе.

Когда я добавляю событие (скажем, щелчком мыши или сразу после его создания), календарь на самом деле не перерисовывается какпретензии к документации.

Я также пытался использовать разновидности renderEvents и renderEvent, но это кажется излишним, поскольку updateEvents обновит рендеринг этих событий.Проблема, с которой я также столкнулся, заключается в том, что «renderEvent» в списке версий календаря не показывает событие, которое я добавляю, если оно выходит за пределы диапазона этого календаря.

const events = [{
    title: 'All Day Event',
    start: TODAY
  },
  {
    title: 'Long Event',
    start: TODAY,
    end: NEXTDAY
  }
]

$("#calendar").fullCalendar({
  header: {
    left: '',
    center: 'title',
    right: ''
  },
  events
})

$("#events").fullCalendar({
  header: {
    left: '',
    center: 'title',
    right: ''
  },
  defaultView: 'listMonth',
  events
})

// Now add a new one
events.push([{
  title: 'Event added',
  start: YESTERDAY
}])

$('#calendar').fullCalendar('updateEvents', events)
$('#events').fullCalendar('updateEvents', events)

Вот воссозданиепроблема:

https://jsfiddle.net/Kikketer/7d92utp5/

Вариант использования довольно прост: добавить новое событие в список событий, отобразить события в календаре.

1 Ответ

0 голосов
/ 13 сентября 2018

сначала измените событие push на объект из массива.

events.push({
   title: 'Event added',
   start: YESTERDAY
});

Теперь у вас есть много вариантов сделать это.Я напишу для вас 2 пути.

a.

$('#calendar').fullCalendar( 'removeEvents');
$('#calendar').fullCalendar('addEventSource', events);

https://jsfiddle.net/7d92utp5/49/

b. 1)Измените события параметр на функцию

$("#calendar").fullCalendar({
  header: {
    left: '',
    center: 'title',
    right: ''
  },
  // at here
  events: function (start, end, timezone, callback) {
    callback(events);
  }
});

2) Используйте refetchEvents вместо updateEvents

$('#calendar').fullCalendar('refetchEvents');

https://jsfiddle.net/7d92utp5/53/

...