如何(有点)将代码添加到 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
    }
});