我正在使用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问题,而不是一个完整的日历问题,但那里有什么建议吗?我真的试图不破解核心;谢谢!
答案 0 :(得分:2)
根据documentation eventAfterAllRender
是一个回调,所以你可以这样做:
$('#your-calendar-element').fullCalendar({
eventAfterAllRender: function (view) {
// add your code here
}
});