来自 FullCalendar 在线文档
FullCalendar 将在需要新事件数据时调用此函数。当用户单击上一个/下一个或切换视图时触发。
这个函数将被赋予开始和结束参数,它们是
Moments ,表示日历需要事件的范围。
timezone是描述日历当前时区的字符串/布尔值。它是时区选项的确切值。
它还将被赋予callback,一个必须在自定义事件函数生成其事件时调用的函数。事件函数的职责是确保使用事件对象数组调用回调。
下面是一个示例,展示了如何使用事件函数从假设的 XML 提要中获取事件:
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.ajax({
url: 'myxmlfeed.php',
dataType: 'xml',
data: {
// our hypothetical feed requires UNIX timestamps
start: start.unix(),
end: end.unix()
},
success: function(doc) {
var events = [];
$(doc).find('event').each(function() {
events.push({
title: $(this).attr('title'),
start: $(this).attr('start') // will be parsed
});
});
callback(events);
}
});
}
});
资源
我做了一些小改动:
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
jQuery.ajax({
url: 'schedule.php/load',
type: 'POST',
dataType: 'json',
data: {
start: start.format(),
end: end.format()
},
success: function(doc) {
var events = [];
if(!!doc.result){
$.map( doc.result, function( r ) {
events.push({
id: r.id,
title: r.title,
start: r.date_start,
end: r.date_end
});
});
}
callback(events);
}
});
}
});
注意: start
并且end
必须是ISO 8601。另一个变化是使用format
代替unix
(这让我更容易处理代码隐藏)