Я использую FullCalendar в качестве интерфейса для пользователей, чтобы назначать встречи. Когда я загружаю календарь, я рисую отдельные дни, основываясь на количестве назначений, уже запланированных в этот день. Здесь код:
function paintCalendar (dailyPercentage) {
$.each(dailyPercentage, function(){
if (this.percentage >= 65) {
$cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
$cell.addClass('fc-high-traffic');
$calendar.fullCalendar('refetchEvents');
} else if (this['percentage'] >= 35) {
$cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
$cell.addClass('fc-medium-traffic');
$calendar.fullCalendar('refetchEvents');
}
});
}
Каждый из классов, которые я добавляю, имеет связанный с ним фоновый цвет.
Однако, когда пользователь нажимает кнопки prev, next или today, календарь полностью перезагружается, а мои добавленные классы удаляются.
Я видел аналогичный вопрос здесь, но его решения участвовать проходя дополнительные данные события самих объектов. Я имею дело с самими днями, которые не прошли.
Есть ли способ инициировать событие после обновления календаря, похожего на этот ответ?
Моя функция работает отлично, мне просто нужно событие, чтобы вызвать его выполнение.
Решение этого вопроса подходит для решения этой проблемы. Я просто добавил триггер в разных местах для обработки конкретных изменений в соответствии с моей проблемой.
fullcalendar.js
function prev() {
renderView(-1);
trigger('complete', null, true);
}
function next() {
renderView(1);
trigger('complete', null, true);
}
function today() {
date = new Date();
renderView();
trigger('complete', null, true);
}
мой javascript
complete: function () {
paintCalendar(dailyPercentage);
}
Вероятно, вам нужно использовать eventRender или eventAfterRender.
Я не совсем понимаю ваш вопрос, но вы можете использовать эти обратные вызовы для добавления классов к своим событиям
Также refetchEvents, вероятно, не должны использоваться в цикле, так как это, вероятно, приведет к нескольким вызовам сервера
Если ваша проблема связана с событием, объект-объект перерисовывает и пропускает ранее заданный элемент, например, цвет фона и классы, взгляните на http://arshaw.com/fullcalendar/docs/event_data/Event_Object/