Fullcalendar updateEvent не перерисовывается

Я хочу добавлять события в свою БД через fullcalendar. Итак, я хочу добавить событие и установить его идентификатор равным идентификатору, который он получает в моей БД.

function addCalEvent(event) {
  var jEvent = {};
  jEvent['startTime'] = moment(event.start).unix();
	jEvent['worker'] = "GUZ"
	jEvent['title']=event.title;
  if (event.end) {
    jEvent['endTime'] = moment(event.end).unix();
  }
  $.ajax({
    url: 'dux.html',
    type: 'POST',
    data: {
      type: 'addNewEvents',
      event: jEvent,
			REQUEST_TOKEN: "REQUEST_TOKEN>",
    },
    datatype: 'json',
		success: function(data) {
		  event.id=data;
			event.title = "NEW";
			$('#calendar').fullCalendar('updateEvent', event);
		},
});
}

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

Как вы добавляете свои новые события в календарь?

StaticBeagle 05.12.2018 13:01

Я вызываю renderEvent в функции dayClick и после этого вызываю addCalEvent.

Bladerxdxi 05.12.2018 13:17
event.id=data это действительно проблема я думаю. После изменения идентификатора fullCalendar не сможет сопоставить его с существующим событием (потому что, если вы не предоставите идентификатор события при первом создании события, fullCalendar автоматически назначит его для вас). Но ваша логика вернулась на передний план ... вам нужно сначала отправить данные события на свой сервер и вернуть идентификатор. Только тогда, когда вы знаете, что сервер принял событие и успешно сохранил его, вы должны создать событие в fullCalendar с помощью renderEvent. И тогда вам вообще не нужно updateEvent.
ADyson 05.12.2018 16:11

@ADyson Я согласен с ADyson в этом вопросе. Согласно документам, вы не можете обновить событие, которое вы создали сами, это должно быть событие из календаря, например. событие вернулось на eventClick. Поэтому я думаю, что лучший способ действий - это то, что предложил ADyson, отправьте запрос ajax, чтобы получить идентификатор события из вашей базы данных в событии dayClick, а затем, используя этот идентификатор, создайте свое событие и затем вызовите renderEvent

StaticBeagle 05.12.2018 16:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
108
2

Ответы 2

Вы можете вручную вызывать события повторной визуализации с помощью $('#calendar').fullCalendar( ‘rerenderEvents’ )

Ссылка на документы здесь

Но я не хочу повторно отображать все события. Вот почему я хотел использовать метод updateEvent.

Bladerxdxi 05.12.2018 12:29

Не могли бы вы добавить jsfiddle своей проблемы?

tmkiernan 05.12.2018 14:18

Хорошо, по-видимому, если вы выполняете асинхронный вызов ajax, порядок, в котором выполняются команды, не является тем порядком, в котором вы его пишете. Мне нужно добавить async: false, чтобы это сработало.

Другие вопросы по теме