Я выяснил, как решить вопрос, я отвечу на него здесь, так как я не нашел никакого обходного пути или дальнейшего анализа проблемы в Интернете ....
Я не проверял свойпроблема в том, чтобы определить, было ли это конкретно связано с тем, что я неправильно устанавливал время окончания события, и календарь не давал мне никаких ошибок по этому вопросу или что-то еще, но если вы идете по той же дороге, я пошелмогу сказать вам:
- Проверьте, правильно ли создано время окончания (что швы, по-моему, является настоящей ошибкой, я использовал setHours вместо getHours в функции getAgendaWorktime, которая превратила окончательное значение вбыть недействительным. Я исправил его в приведенном ниже примере, но допустил неверное отображение в скрипте, чтобы показать использование атрибута forceEventDuration);
- Установите для параметра forceEventDuration значение «true» (что приводит к «концу»)атрибут, который всегда должен быть заполнен, облегчая мой код, поскольку я всегда могу ожидать строку из метода ".format ()" attibute);
по многим причинам fullcalendar.io иногда не устанавливает дату окончания события, и это вызывало у меня проблемы при оценке времени окончания события (хорошо, я мог обойти это, но язаинтригованный тем, почему он получал мне те результаты, когда это не могло, и answare был ошибочным кодом).С помощью «forceEventDuration: true» fullcalendar каждый раз для меня давал время окончания, и я мог обнаружить, что используемый мной метод ввода неправильно устанавливал дату окончания, а также давал мне возможность исправить его.
Ссылкиrelated:
Я надеюсь, что этот ответ мог бы помочь новичкам в fullcalendar.io as me.
Образец скриптовой части JavaScript, исправленный:
$(function() {
$('#calendar').fullCalendar({
header: false,
allDaySlot: false,
forceEventDuration: true,
visibleRange: {start: moment('2000-01-02'), end: moment('2000-01-09')},
editable: true,
selectable: true,
views: {
settimana: {
type: 'agenda',
columnFormat: 'ddd',
hiddenDays: []
}
},
defaultView: 'settimana',
defaultDate: $.fullCalendar.moment().startOf('week'),
slotMinutes: 30,
events: [
$.fn.getAgendaWorktime(1, "08:00:00", 60),
$.fn.getAgendaWorktime(2, "08:30:00", 120),
],
select: function(startDate, endDate) {
$('#calendar').fullCalendar('renderEvent', {
title: 'free time',
start: startDate.format(),
end: endDate.format(),
allDay: false
});
},
eventClick: function(calEvent, jsEvent, view) {
console.log(calEvent, jsEvent, view);
if(doubleClick==calEvent._id){
if (confirm('Delete it?')) {
$('#calendar').fullCalendar('removeEvents',calEvent._id);
}
doubleClick = null;
}else{
doubleClick=calEvent._id;
}
},
});
});
function getEvents() {
var e=0,err=false,$data = []
$('#calendar').fullCalendar('clientEvents').forEach(periodo => {
if (periodo.end==null || periodo.start.format().substr(0,10)!=periodo.end.format().substr(0,10)) {
if (e==0) {
err = true;
e++;
alert('Event startint at '+periodo.start.format()+' cant spread to multiple days');
}
} else {
$data.push({'ini': periodo.start.format(), 'fim': periodo.end.format()});
}
});
alert($data[0].fim);
}
jQuery.fn.getAgendaWorktime = function ($dow, $start, $elapsed) {
var r = {
allDay: false,
title: 'free time',
start: new Date('2000-01-02 '+$start),
end: new Date('2000-01-02 '+$start)
};
r.start.setDate(r.start.getDate()+$dow);
r.end.setDate(r.end.getDate()+$dow);
r.end.setHours(r.end.getHours()+($elapsed*60));
return(r);
}