fullCalendar
cho phép thay vì truyền một loạt sự kiện, bạn có thể chuyển một hàm, ví dụ: tải xuống các sự kiện từ máy chủ hoặc tự động tạo các sự kiện đó.
Hầu hết các ví dụ trong tài liệu đều sử dụng các yêu cầu HTTP để nhận dữ liệu sự kiện. Nhưng chức năng gọi lại vẫn đủ linh hoạt để làm cho nó hoạt động theo cách bạn muốn.
Nhìn vào ví dụ sau Tôi vừa mới viết cho bạn:
$(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);
}
);
});
Chức năng tự động tạo ra trên một sự kiện cho mỗi thứ Hai và thứ tư giữa hai ngày. Ngày được chỉ định trong các thông số start
và end
. Các thông số đó được chuyển qua fullCallendar
. Các sự kiện được tạo bởi hàm trên được trả về fullCallendar
thông qua hàm callback
trong tham số thứ ba.
Tôi sử dụng DateJS để kiểm tra xem một ngày cụ thể có phải là thứ hai hay không.
CẬP NHẬT: Nếu bạn muốn kết hợp sự kiện tĩnh và/hoặc [nhiều hơn một] sự kiện lặp lại, bạn có thể sử dụng addEventSource.
Người đọc trong tương lai: Hiện có các cách tốt hơn để thực hiện việc này (3 năm sau), nhưng điều này vẫn nằm trong kết quả hàng đầu của google. Hãy xem http://stackoverflow.com/questions/15161654/recurring-events-in-fullcalendar – slicedtoad