Ich denke, der Grund ist, dass FullCalendar den Titel in die Zeit div stellt, wenn es nicht genug Platz, um den Titel in einer separaten Zeile zu zeigen (was typischerweise der Fall ist, wenn ein Ereignis nur 30 Minuten erstreckt). Wenn die Uhrzeit und der Titel im selben div platziert werden, übergibt FullCalendar nur die Startzeit an das Datumsformatierer.
Um es Ihnen arbeiten zu können Zeilennummer 4020 in fullcalendar.js ändern von (v 1.6.1.):
eventElement.find('div.fc-event-time')
.text(formatDate(event.start, opt('timeFormat')) + ' - ' + event.title);
zu
eventElement.find('div.fc-event-time')
.text(formatDates(event.start, event.end, opt('timeFormat')) + ' - ' + event.title);
Wenn Sie nicht wollen, ändern Im Quellcode von FullCalendar können Sie stattdessen in den Rückruf eventRender
schauen.
aktualisiert Antwort
Es ist wahrscheinlich besser, dies zu beheben, ohne den Quellcode FullCalendar zu ändern, und es ist eigentlich ziemlich einfach es „der richtige Weg“ zu tun. Die eventRender
ist jedoch nicht sehr nützlich, da FullCalendar die Uhrzeit und den Titel nach diesem Callback zusammenfasst und unsere Änderungen überschrieben werden.
Zum Glück gibt es einen anderen Rückruf eventAfterRender
, die verwendet werden können:
eventAfterRender: function(event, $el, view) {
var formattedTime = $.fullCalendar.formatDates(event.start, event.end, "HH:mm { - HH:mm}");
// If FullCalendar has removed the title div, then add the title to the time div like FullCalendar would do
if($el.find(".fc-event-title").length === 0) {
$el.find(".fc-event-time").text(formattedTime + " - " + event.title);
}
else {
$el.find(".fc-event-time").text(formattedTime);
}
}
Hier ist ein Beispiel auf jsfiddle: http://jsfiddle.net/kvakulo/zutPu/
@ Regin Larsen "Wenn die Uhrzeit und der Titel im selben div platziert werden, übergibt FullCalendar nur die Startzeit an den Datumsformatierer." Danke, ich wusste das nicht. – user1930254