fullcalendar动态添加事件
我正在尝试动态地在完整日历中创建事件。
我有:
$('#calendar').fullCalendar({ viewRender: function (view) { var h; if (view.name == "month") { h = NaN; } else { h = 2500; // high enough to avoid scrollbars } $('#calendar').fullCalendar('option', 'contentHeight', h); }, lang: 'fr', events: [ { title: '8 présents', start: data[0] }, { title: '8 excusés', start: data[1] }, { title: '8 excusés', start: '2015-01-08' }, { title: '8 présents', start: '2015-01-08' }, ], dayClick: function (date, jsEvent, view) { window.location.replace(Routing.generate('dateChoisie', {date: date.format()})); } })
我有一个var数据,这是一个包含事件所有日期的数组。 我想以与插入数据[0],数据[1]等相同的方式在事件中插入它,但是动态地为所有日期插入。
我试过做一个:
events: [ for (var i = 0, max = data.Lenght; i < max; i++) { { title: '8 présents', start: data[i] }, } { title: '8 excusés', start: data[1] }, { title: '8 excusés', start: '2015-01-08' }, { title: '8 présents', start: '2015-01-08' }, ],
但它在列表中不起作用。
谁知道我怎么做到这一点?
渲染完整日历后,您可以动态添加事件。
var event={id:1 , title: 'New event', start: new Date()}; $('#calendar').fullCalendar( 'renderEvent', event, true);
资料来源: http : //fullcalendar.io/docs/event_data/addEventSource/
您可以动态添加事件源。 事件源是一个可以返回json数据的URL。
也许在更改事件数据后触发refetch
事件可能就足够了。
.fullCalendar( 'refetchEvents' )
资料来源: http : //fullcalendar.io/docs/event_data/refetchEvents/
我正在寻找一段时间,我发现了一种可能性。
最后这很容易……
我在这里说,也许任何人都有兴趣。
for (var i in data) var monthSource = new Object(); monthSource.title = data[i]+' présents'; monthSource.start = i; // this should be date object monthSource.end = new Date(y, m, d); //to now month[a] = monthSource; a++; } $('#calendar').fullCalendar({ viewRender: function (view) { $('#calendar').fullCalendar( 'removeEvents'); $('#calendar').fullCalendar('addEventSource', month); }
如网站示例所示:
https://fullcalendar.io/docs/renderEvent-demo
因此,添加事件,然后使用您想要添加到后端的任何内容。
或者您可以将事件添加到后端,然后返回数据库的新ID,然后将其添加到时间线,这样您就可以正确使用ID。
或者使用返回消息更新id,无论你的船是什么。
(如果你做了任何复杂的事情,被接受的解决方案将失去事件;添加的事件是短暂的,如果你眨眼太猛烈,它将自发消失。这个解决方案很强大,如果你做更复杂的事情,它将起作用。)
对持久性事件的支持有点不优雅。 您可能必须转储,重新加载和呈现整个日历状态……:
var CAL, EVENTS; $(document).ready(function() { // set up calendar with an EventSource (in this case an array) EVENTS = [...]; $('#calendar').fullCalendar({...}); // calendar object CAL = $('#calendar').fullCalendar('getCalendar'); // extend object (could be its own function, etc.) CAL.refresh = function() { CAL.removeEvents(); CAL.addEventSource(EVENTS); } // finish setting up calendar CAL.refresh(); });
演示:
EVENTS.pop(); // remove last event refresh(); // refresh calendar; last event no longer there
请参阅https://stackoverflow.com/a/18498338