我正在和 http://fullcalendar.io/一起工作。我的目的是为假期赋予不同的背景颜色。经过大量搜索,我可以说一个好的解决方案是使用 dayRender 钩子。但是如何获取假期列表,时间呢?
解决方案 1:每天调用 Ajax。
dayRender: function (date, cell) {
$.ajax({
url: '/myproject/holidays?date='+date,
type: "POST",
success: function(isHoliday) {
if (isHoliday) {
cell.css("background-color", "red");
}
}
});
}
它应该可以工作,但是...阿贾克斯每天都在打电话?这似乎不是一个好的解决方案。
解决方案 2:一个 ajax 调用以获取所有假期
dayRender: function (date, cell) {
if ($.inArray(date, holidayList)) {
cell.css("background-color", "red");
}
}
"假日列表"之前在某个地方被获取的地方。这是我的问题。在什么时候之前?我如何确定在调用 dayRender 之前已完成 holidayList 的获取?换句话说:是否有我可以依靠的钩子来获取假期列表?
谢谢
我在这里看到的两个选项:
-
仅在假期获取 Ajax 请求完成后初始化整个日历(同时显示加载器/微调器(。简单,但不"漂亮"。
-
假日获取 Ajax 请求完成后,刷新整个日历视图。遗憾的是,由于内部
reinitView
方法没有导出以在外部调用,因此您必须再执行几个步骤:var fcEl = $('#calendar'), view = fcEl.fullCalendar('getView'); view.unrenderDates(); view.renderDates(); fcEl.fullCalendar('refetchEvents');