在FullCalendar中,使用
eventLimit: 2
将月视图中显示的事件数限制为每天两个。 A'显示更多'然后添加链接,打开一个显示所有事件的小弹出窗口。在月视图中,事件按时间顺序显示,但在显示更多弹出窗口中,它们由事件ID排序。如何在弹出窗口中按时间顺序排序?
答案 0 :(得分:0)
我一直试图为您的问题找到一个已实施的解决方案,但无济于事。你得到那个结果很奇怪:如果你看一下插件的源代码,它应该按照开始时间对事件进行排序:
// fullcalendar.js
// A cmp function for determining which segments should take visual priority
// DOES NOT WORK ON INVERTED BACKGROUND EVENTS because they have no eventStartMS/eventDurationMS
function compareSegs(seg1, seg2) {
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
(seg1.event.title || '').localeCompare(seg2.event.title); // tie? alphabetically by title
}
无论如何,有关于this的问题/功能请求已打开。
我提出的一个解决方案如下:如果id在客户端并不重要且可以修改,您可以按日期排序事件数组并相应地修改ID:
function compare(a, b) {
if (moment(a.start).isSame(b.start)) {
return 0;
}
if (moment(a.start).isBefore(b.start)) {
return -1;
}
return 1;
}
events.sort(compare);
for(var i = 0; i<events.length; i++) {
events[i]['id']=i;
}
然后将有序数组传递给fullcalendar,并且事件应该按照弹出窗口中的开始时间排序。