2012-02-02 70 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