您需要使用fullCalendar的events函数中提供的开始和结束将数据限制在某个窗口:
, events: function (start, end, timezone, callback) {
fetchEvents(start, end, timezone, callback);
}
然后将数据窗口限制为例如函数本身的 4 个月(未来 2 个月,过去 2 个月):
// make a large window of data in order to avoid missing long-events on the calendar - they won't load otherwise
start.subtract(2, 'months');
end.add(2, 'months');
start = start.format("YYYY-MM-DD") + "T" + start.format("HH:mm:ss");
end = end.format("YYYY-MM-DD") + "T" + end.format("HH:mm:ss");
最后,在通话中使用开头和结尾。我正在使用 Sharepoint API,所以我的 REST API 查询 URL 的一部分看起来像这样,但根据您的数据源,它可能会有所不同:
"and StartDate ge datetime'" + start + "' " + /* start of events window */
"and EndDate le datetime'" + end + "'" + /* end of events window */
显然,这意味着您需要限制事件的最大长度。