FullCalendar - 提取显示的事件

时间:2012-02-02 23:11:36

标签: jquery fullcalendar

是否可以从FullCalendar对象中发现/提取当前显示的事件(参考:http://arshaw.com/fullcalendar)?

理想情况下,我希望事件的辅助显示与日历一起显示,该日历应仅显示当前显示的事件(例如,如果日历显示在“2012年3月”,我只想查看2012年3月的事件。次要名单)。

我猜我会想要构建某种过滤器,但我希望我能够将详细信息直接从日历中拉出来。我认为插件必须已经建立,哪些有效显示...

任何指向我错过的函数/属性的指针都将非常感激。

3 个答案:

答案 0 :(得分:5)

使用版本2.x,您可以过滤当前视图的intervalStart& amp; 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());

答案 1 :(得分: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();

答案 2 :(得分:0)

感谢James Ellis-Jones,我在完整日历资源视图的分支上实现了这一点,并向完整日历资源视图所有者发送了拉取请求。

https://github.com/stephenreid/fullcalendar/commit/808a0ac2ff8e9f900af263049cc95a7d4e2b6546