Я использовал AJAX для запроса данных из базы данных через API. Вот функция. Так как форматирование в дБ отличается от того, которое требуется для полного календаря, я создал объект с именем schedule, который выглядит так же, как объект события, для хранения каждого элемента события. Затем pu sh каждый объект в массив, называемый расписаниями. (В случае, если кто-то спросит, reformattingTime () просто меняет строку, которую я получаю из базы данных, с формата ЧЧММ на ЧЧ: ММ: СС)
function getCourse(arr){
$.ajax({
type: "GET",
url: '/course',
success: function(req){
for (var i = 0; i < req.length;i++){
var schedule = {daysOfWeek:[]};
schedule.title = req[i].course_name;
schedule.daysOfWeek = req[i].course_day;
schedule.startTime = reformattingTime(req[i].course_starttime);
schedule.endTime = reformattingTime(req[i].course_endtime);
arr.push(schedule);
}
},
error: function(err){
alert('Error:' + err);
}
}
)
}
вот как выглядит расписание [0]
Затем, когда я загружаю страницу, я добавляю расписания в качестве источника событий, а затем отображаю календарь. Однако события не будут отображаться в календаре.
<script>
var schedules = [];
$(document).ready(function(){
getCourse(schedules);
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['timeGrid', 'dayGrid', 'interaction', 'list'],
header:{
left: 'timeGridWeek,listMonth'
},
defaultView: 'timeGridWeek',
});
calendar.addEventSource(schedules);
calendar.render();
});
Если я жестко закодирую массив, события могут отображаться. Я проверил, что объект расписания из getCourse () совпадает с объектом, который я жестко запрограммировал.
индекс 0 жестко запрограммирован, а индекс 1 генерируется из функции. В этой ситуации отображается только 0
<script>
var schedules = [{
title: "A1",
startTime: "18:00:00",
endTime: "20:00:00",
daysOfWeek:['1']
}];
$(document).ready(function(){
getCourse(schedules);
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['timeGrid', 'dayGrid', 'interaction', 'list'],
header:{
left: 'timeGridWeek,listMonth'
},
defaultView: 'timeGridWeek',
});
calendar.addEventSource(schedules);
calendar.render();
});