fullCalendar
允许您传递一个函数,而不是传递事件数组,而是传递一个函数,例如,从服务器下载事件,或动态生成这些事件。
文档中的大多数示例都使用 HTTP 请求来获取事件数据。但是回调函数仍然足够灵活,可以让它按照你想要的方式工作。
请看下面我刚刚为您编写的示例:
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: [
// some original fullCalendar examples
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
title: 'Long Event',
start: new Date(y, m, d-5),
end: new Date(y, m, d-2)
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d-3, 16, 0),
allDay: false
}
]
});
// adding a every monday and wednesday events:
$('#calendar').fullCalendar( 'addEventSource',
function(start, end, callback) {
// When requested, dynamically generate virtual
// events for every monday and wednesday.
var events = [];
for (loop = start.getTime();
loop <= end.getTime();
loop = loop + (24 * 60 * 60 * 1000)) {
var test_date = new Date(loop);
if (test_date.is().monday()) {
// we're in Moday, create the event
events.push({
title: 'I hate mondays - Garfield',
start: test_date
});
}
if (test_date.is().wednesday()) {
// we're in Wednesday, create the Wednesday event
events.push({
title: 'It\'s the middle of the week!',
start: test_date
});
}
} // for loop
// return events generated
callback( events );
}
);
});
上述函数会在两个日期之间的每个星期一和星期三自动生成一个事件。日期在start
和end
参数中表示。这些参数通过fullCallendar
. fullCallendar
上述函数产生的事件通过callback
第三个参数中的函数返回。
我使用DateJS来测试给定的日期是否是星期一。
更新:如果您想混合静态事件和/或 [多个] 可重复事件,您可以使用addEventSource。