2015-05-06 18 views
0

我正在使用fullcalendar 1.6.3以及Drupal 7(因此目前需要回到1.6.3)。每當我的日曆視圖發生變化(通過ajax請求)時,我都想要運行一些代碼 - 前進或後退,或者月/周/日視圖之間。如何(有點)將代碼添加到fullcalendar的renderEvents處理程序中?

基於一些測試,我可以通過黑客來源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問題比fullcalendar問題更多,但有沒有什麼建議嗎?我真的不想破解核心;謝謝!

回答

2

按照documentationeventAfterAllRender是一個回調,所以你可以這樣做:

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

這是工作;非常感謝。可悲的是,我仍然遇到了一個問題,即Drupal Views模塊負責創建fullcalendar實例。因此,當我添加這段代碼時,我會在頁面上看到第二個日曆,這當然會把所有事情搞砸。但這是另一回事,而不是你所關心的(除非你碰巧知道答案)...... –

相關問題