Tôi nghĩ lý do là FullCalendar đặt tiêu đề vào thời div khi không có đủ không gian để hiển thị các tiêu đề trên một dòng riêng biệt (thường là trường hợp khi một sự kiện chỉ kéo dài 30 phút). Khi thời gian và tiêu đề được đặt trong cùng một div, FullCalendar chỉ chuyển thời gian bắt đầu cho trình định dạng ngày.
Để làm cho nó làm việc bạn có thể thay đổi dòng số 4020 trong fullcalendar.js từ (v 1.6.1.):
eventElement.find('div.fc-event-time')
.text(formatDate(event.start, opt('timeFormat')) + ' - ' + event.title);
để
eventElement.find('div.fc-event-time')
.text(formatDates(event.start, event.end, opt('timeFormat')) + ' - ' + event.title);
Nếu bạn không muốn thay đổi mã nguồn của FullCalendar, thay vào đó bạn có thể nhìn vào cuộc gọi lại eventRender
.
câu trả lời Cập nhật
Đây có thể là tốt hơn để sửa lỗi này mà không thay đổi mã nguồn của FullCalendar, và nó thực sự khá đơn giản để làm điều đó "đúng cách". Tuy nhiên, eventRender
không phải là quá hữu ích, vì FullCalendar thu gọn thời gian và tiêu đề sau cuộc gọi lại này và các thay đổi của chúng tôi sẽ bị ghi đè.
May mắn có một callback eventAfterRender
mà có thể được sử dụng:
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);
}
}
Dưới đây là một ví dụ về jsfiddle: http://jsfiddle.net/kvakulo/zutPu/
Nguồn
2013-07-30 07:49:26
@ Regin Larsen "Khi thời gian và tiêu đề được đặt trong cùng một div, FullCalendar chỉ chuyển thời gian bắt đầu cho trình định dạng ngày." cảm ơn, tôi không biết điều đó. – user1930254