FullCalendar «перерисовывает» с подпиской

Как повторно отобразить FullCalendar при подписке на событие?

Кстати, приведенный ниже код работает отлично. Если есть новая информация, хотя она загружается, она не отображается, пока вы не обновите страницу.

есть ли способ сделать это живым и динамичным?

Код ниже:

this.store.select(fromEvents.selectAll)
   .subscribe(a => {
       this.events = a;
       $('#calendar').fullCalendar( 'rerenderEvent' )
   });

К вашему сведению, я также пробовал следующее:

$('#calendar').fullCalendar( 'renderEvent', this.events )
$('#calendar').fullCalendar( 'refetchEvent' )

Я также следую этому сообщению ниже:

проблема rerenderEvents/refetchEvents

приведенный ниже код работает почти идеально. Он кажется живым и динамичным... но я не могу удалить

this.store.select(fromEvents.selectAll)
   .subscribe(a => {
       this.events = a;
       $('#schedule').fullCalendar('removeEvents');
       $('#schedule').fullCalendar('addEventSource', a);
       $('#schedule').fullCalendar('rerenderEvents');
   });

С технической точки зрения, должен ли приведенный ниже код отображать все, что находится в массиве?

$('#calendar').fullCalendar( 'refetchEvent' )

Спасибо всем за помощь заранее


person Jose    schedule 13.01.2018    source источник
comment
Ни один из этих методов rerenderEvent или refetchEvent не существует в fullCalendar. Проверьте fullcalendar.io/docs. Они оба во множественном числе. Поскольку источник событий должен возвращать массив, содержащий одно или несколько событий, нет смысла (и нет возможности) повторно получать одно из них — это не под контролем fullCalendar — вы просто возвращаете то, что решил вернуть источник   -  person ADyson    schedule 14.01.2018
comment
В любом случае календарь обновляет события только в том случае, если вы меняете вид или дату или явно вызываете refetchEvents. И даже в этом случае это происходит только в том случае, если вы определяете динамический источник данных (а не статический массив JS) в соответствии с fullcalendar.io/docs/event_data/events_json_feed или fullcalendar.io/docs/event_data/ функция_событий). Если вы передали события в виде статического массива (это не совсем ясно из ваших неполных фрагментов кода, но похоже, что вы это сделали), то fullCalendar не сможет узнать, как их обновить, вам нужно указать URL-адрес или функция, которую он может повторно запустить.   -  person ADyson    schedule 14.01.2018
comment
Спасибо за информацию @ADyson. В настоящее время я подписываюсь на событие из магазина NGRX. Каждый раз, когда происходят изменения, массив обновляется динамически. Я попытался вызвать $('#calendar').fullCalendar( 'refetchEvents' ) в рамках подписки в надежде, что он обновит все, но, похоже, этого не произошло.   -  person Jose    schedule 14.01.2018
comment
Я не знаю, что такое NGRX, но в любом случае... массив обновляется динамически. Не для полного календаря это не так. fullCalendar сделал копию. Вы обновляете другую копию. Создайте функцию для fullCalendar в соответствии с fullcalendar.io/docs/event_data/events_function и внутри него извлеките данные из хранилища NGRX. Затем FullCalendar может запускать эту функцию каждый раз, когда ему нужно получить события.   -  person ADyson    schedule 14.01.2018
comment
Спасибо @ADyson, я попробую. сделаю репост после завершения   -  person Jose    schedule 15.01.2018
comment
Нет проблем, если вы исправите это, не забудьте опубликовать его в разделе ответов, не перезаписывайте свой вопрос :-)   -  person ADyson    schedule 15.01.2018