2013-12-16 24 views
0

我使用Adam Shaw的jQueryUI FullCalendar(http://arshaw.com/fullcalendar/docs/event_data/events_function/)。jQueryUI FullCalendar:從服務器取回事件後的回調

當我按下下一個按鈕時,日曆會從我的服務器加載新事件,我想將這些事件顯示爲我的頁面上的一個表格,而不僅僅是日曆。有一個回調函數,我可以注入來處理事件,一旦FullCalendar提取了它們?或者還有其他方式來獲取當前顯示的事件嗎?

+0

我已經做了類似於我的日曆的事情,是否必須通過數據表與日曆和外部日曆中的fullcalendar事件進行交互。 嘗試使用數據表jQuery插件它會讓你的生活變得輕鬆;) –

回答

1

我解決了實際重寫代碼的問題來獲取數據:

var myCustomFunction = function(events) { 
    // do something 
} 

var myCustomFetchFunction = function(start, end, callback) { 
    $.ajax({ 
     url: 'feed.php', 
     dataType: 'json', 
     data: { 
      // our hypothetical feed requires UNIX timestamps 
      start: Math.round(start.getTime()/1000), 
      end: Math.round(end.getTime()/1000) 
      // additional parameters can be added here 
     }, 
     success: function(events) { 
      callback(events); 
      // this is where I do some custom stuff with the events 
      myCustomFunction(events); 
     } 
    }); 
}; 

$('#calendar').fullCalendar({ 
    events: myCustomFetchFunction() 
}); 
+0

這正是我在第一個答案中解釋的。 – jazZRo

+0

謝謝,我只是不明白你的答案,我想更多的代碼會有所幫助。但也許這只是我。儘管感謝您的幫助。 –

1

您發佈的鏈接顯示在回答你的問題:

$('#calendar').fullCalendar({ 
events: function(start, end, callback) { 
    $.ajax({ 
... 

「事件」回調函數每次使用新的事件被取出。在這個例子中,調用jQuery的$.ajax函數來檢索事件數據(看看the ajax function)。然後$.ajax「成功」回調來自服務器的事件數據解析成FullCalendar期望格式:

$(doc).find('event').each(function() { 
    events.push({ 
     title: $(this).attr('title'), 
     start: $(this).attr('start') // will be parsed 
    }); 
}); 
callback(events); 

在該示例中「DOC」是一個XML文檔,其包含具有一個標題和一個start屬性事件元素。您應該將其更改爲從服務器檢索到的任何內容。通過檢索數據,您可以在將其傳遞到FullCalendar之前或之後執行任何操作(例如callback(events);

+0

我不想覆蓋函數來獲取事件。我寧願添加一個在FullCalendar成功獲取事件後調用的回調函數。你能在這裏進一步指導我嗎? –

+0

你應該看看[這個頁面](http://arshaw.com/fullcalendar/docs/event_rendering/)。有一個事件'eventAfterAllRender'可能會有幫助。或通過事件的'eventRender'。 – jazZRo

+1

如何獲取eventAfterAllRender回調函數中的事件? ViewObject不包含這些事件:http://arshaw.com/fullcalendar/docs/views/View_Object/ –

0

使用eventRender將事件插入到DOM中。見documentation

eventRender: function(event, element) { 
    // do some DOM manipulation here 
} 

或收集它們,將它們插入到DOM後:

var collection = []; 
$('#calendar').fullCalendar({ 
    eventRender: function(event, element) { 
     collection.push(event); 
    } 
}); 
3

對於其他人尋求這個解決方案,在V2中很容易。您可以使用簡單事件對象傳遞成功回調。

 $('#calendar').fullCalendar({ 
      events: { 
       url: 'http://yourdatafeed', 
       type: 'POST', 
       error: function() { 
        // Alert on error 
       }, 
       success: function (data) { 
        // data will have your json array of event objects 
       }, 
      } 
     });