如何(有点)将代码添加到 fullcalendar 的 renderEvents 处理程序?
How to (sort of) add code to fullcalendar's renderEvents handler?
我正在使用 fullcalendar 1.6.3 和 Drupal 7(因此现在需要回到 1.6.3)。每当我的日历视图发生变化(通过 ajax 请求)时,我都想 运行 一些代码——及时向前或向后,或者在 month/week/day 视图之间。
根据一些测试,我可以通过破解 renderEvents
:
的源代码来做到这一点
function renderEvents(modifiedEventID) { // TODO: remove modifiedEventID hack
if (elementVisible()) {
currentView.setEventData(events); // for View.js, TODO: unify with renderEvents
currentView.renderEvents(events, modifiedEventID); // actually render the DOM elements
currentView.trigger('eventAfterAllRender');
// my_code_here();
}
}
但这当然是错误的。不幸的是,我想不出任何其他方法来做到这一点,可能是因为我的 Javascript 知识存在一些明显的差距。我尝试在 eventAfterAllRender
:
上设置事件处理程序
var eventAfterAllRenderEvent = new Event('eventAfterAllRender');
document.addEventListener('eventAfterAllRender', function (e) {my_code_here() }, false);
document.dispatchEvent(eventAfterAllRenderEvent);
但是(对我来说)只有 运行 页面加载,而不是在 ajax 事件之后。
这可能更像是一个 Javascript 问题,而不是一个完整的日历问题,但是有什么建议吗?我真的不想破解核心;谢谢!
根据documentation eventAfterAllRender
是一个回调,所以可以这样做:
$('#your-calendar-element').fullCalendar({
eventAfterAllRender: function (view) {
// add your code here
}
});
我正在使用 fullcalendar 1.6.3 和 Drupal 7(因此现在需要回到 1.6.3)。每当我的日历视图发生变化(通过 ajax 请求)时,我都想 运行 一些代码——及时向前或向后,或者在 month/week/day 视图之间。
根据一些测试,我可以通过破解 renderEvents
:
function renderEvents(modifiedEventID) { // TODO: remove modifiedEventID hack
if (elementVisible()) {
currentView.setEventData(events); // for View.js, TODO: unify with renderEvents
currentView.renderEvents(events, modifiedEventID); // actually render the DOM elements
currentView.trigger('eventAfterAllRender');
// my_code_here();
}
}
但这当然是错误的。不幸的是,我想不出任何其他方法来做到这一点,可能是因为我的 Javascript 知识存在一些明显的差距。我尝试在 eventAfterAllRender
:
var eventAfterAllRenderEvent = new Event('eventAfterAllRender');
document.addEventListener('eventAfterAllRender', function (e) {my_code_here() }, false);
document.dispatchEvent(eventAfterAllRenderEvent);
但是(对我来说)只有 运行 页面加载,而不是在 ajax 事件之后。
这可能更像是一个 Javascript 问题,而不是一个完整的日历问题,但是有什么建议吗?我真的不想破解核心;谢谢!
根据documentation eventAfterAllRender
是一个回调,所以可以这样做:
$('#your-calendar-element').fullCalendar({
eventAfterAllRender: function (view) {
// add your code here
}
});