如何(有点)将代码添加到fullcalendar的renderEvents处理程序?

时间:2015-05-06 18:18:36

标签: javascript ajax javascript-events fullcalendar

我正在使用fullcalendar 1.6.3以及Drupal 7(因此现在需要回到1.6.3)。每次我的日历视图发生变化(通过ajax请求)时,我都会运行一些代码 - 在时间上向前或向后,或在月/周/日视图之间运行。

基于某些测试,我可以通过黑客攻击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问题,而不是一个完整的日历问题,但那里有什么建议吗?我真的试图不破解核心;谢谢!

1 个答案:

答案 0 :(得分:2)

根据documentation eventAfterAllRender是一个回调,所以你可以这样做:

$('#your-calendar-element').fullCalendar({
    eventAfterAllRender: function (view) {
        // add your code here
    }
});