FullCalendar – 提取显示的事件
是否可以从FullCalendar对象中发现/提取当前显示的事件,(参考: http ://arshaw.com/fullcalendar)?
理想情况下,我想要一个事件的辅助显示,以及日历,它应该只显示当前显示的事件(例如,如果日历是在“2012年3月”,我只想在二级列表中看到2012年3月的事件) 。
我猜我会想要构建某种filter,但希望我能够直接从日历中提取细节。 我认为插件必须已经建立,哪些有效显示…
任何指向我错过的函数/属性的指针都将非常感激。
是的,这很难做到。 我最近在FullCalendar中一直在挖掘,因为我为了自己的目的而在其中加入了大量额外的function。 它不会在内部以该forms存储信息,但您可以通过一个小的黑客来获取它:
在第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.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());
感谢James Ellis-Jones,我在完整日历资源视图的分支上实现了这一点,并向完整日历资源视图所有者发送了拉取请求。
https://github.com/stephenreid/fullcalendar/commit/808a0ac2ff8e9f900af263049cc95a7d4e2b6546