2012-02-02 78 views
4

是否可以從FullCalendar對象(參考:http://arshaw.com/fullcalendar)發現/提取當前顯示的事件FullCalendar - 提取顯示的事件

理想情況下,我希望在事件的旁邊顯示旁邊的日曆,它應該只顯示當前顯示的事件(例如,如果日曆是「2012年3月」,我只想看到2012年3月的事件次要清單)。

我想我會nedd構建某種過濾器,但希望我能夠將細節從日曆中刪除。我想這個插件必須已經建立,哪些對顯示有效......

任何指向我錯過的函數/屬性的指針將不勝感激。

+0

什麼日曆是你使用? Jquery UI日曆? – Mike 2012-02-02 23:12:46

+0

@mugur對不起 - 這是'FullCalendar'插件:[http://arshaw.com/fullcalendar](http://arshaw.com/fullcalendar)。我會更新Q來澄清... – 2012-02-02 23:34:51

回答

2

是的這是令人驚訝的難以做到的。我最近在FullCalendar中進行了大量的挖掘工作,因爲我一直在爲自己的目的而盜用一些額外的功能。它沒有內部存儲在表單中的信息,但你可以得到它的小黑客:

在插入線4243(在fullcalendar 1.5.2)

t.eventResize = eventResize 
//add starts 
t.getShownEvents = function() { 
    evs = []; 
    for (id in eventElementsByID) 
    evs = evs.concat(eventsByID[id]); 
    return evs; 
} 
//add ends 

那麼這樣做是爲了得到一個對象當前顯示事件的數組:

var evs = $('#calendar').fullCalendar('getView').getShownEvents(); 
+0

太棒了 - 我會給它一個去。看起來很整齊。同時,我會認爲這是正確的。非常感謝+榮譽:) – 2012-02-04 16:46:05

3

與2.x版本,你可以過濾當前視圖的intervalStart & INTERVALEND到目前爲止加載的所有客戶端事件 - 我用一個工廠函數getIdOrFilter這樣做

App.getIdOrFilter = function() { 
    var view = $('#calendar').fullCalendar('getView'); 
    var start = view.intervalStart; 
    var end = view.intervalEnd; 
    return function (e) { 
     // this is our event filter 
     if (e.start >= start && e.end <= end) { 
      // event e is within the view interval 
      return true; 
     } 
     // event e is not within the current displayed interval 
     return false; 
    }; 
} 

... 

var events = $('#calendar').fullCalendar('clientEvents', App.getIdOrFilter()); 
+0

這應該是公認的答案,只要它不需要破解庫(它避免了升級它的能力) – 2015-12-09 15:11:03