从数组中设置fullcalendar中的事件

时间:2014-05-26 14:57:24

标签: javascript php arrays javascript-events fullcalendar

我正在使用fullcalendar,但我想从数组中设置事件,例如:

var countries = new Array();
countries[0] = {'title':'España', 'start':new Date(y, m, d+4, 19, 0), url:'http://google.com/'};
countries[1] = {'title':'Portugal', 'start':new Date(y, m, 22, 22, 0)};

这是一个静态的例子,我将得到这个数组,并且在每种情况下我都会有3或9或......不同的事件。

但是例子是:

$('#calendar').fullCalendar({
    editable: false,
    events: [ 
        {
            title: 'example',
            start: new Date(y, m, d+1, 19, 0),
            end: new Date(y, m, d+1, 22, 30),
            allDay: false
        },
        {
            title: 'Click for Google',
            start: new Date(y, m, 28),
            end: new Date(y, m, 29),
            url: 'http://google.com/'
        },         
    ]
});

如何删除这两个示例事件并仅设置我的数组“countries”?

有可能吗? 提前谢谢。

3 个答案:

答案 0 :(得分:8)

从日历中删除事件。

$("#calendar").fullCalendar( 'removeEvents' [, idOrFilter ] )

动态添加事件源。

$("#calendar").fullCalendar( 'addEventSource', source )

从这里: https://fullcalendar.io/docs/addEventSource

答案 1 :(得分:3)

如果您使用的是fullcalendar v4,则在Github issue中提到了很多API更改。

您将需要使用新的API从日历中获取所有事件对象,并对所有事件对象调用remove方法。

删除后,您需要使用calendar.addEvent(event)添加所有事件。

我们不想在添加每个事件后重新渲染完整的日历,因此我们将其包装到一个批处理渲染中,这只会导致一个重新渲染。

newEvents是要添加的事件的数组。

// batch every modification into one re-render
calendar.batchRendering(() => {
    // remove all events
    calendar.getEvents().forEach(event => event.remove());

    // add your new events
    newEvents.forEach(event => calendar.addEvent(event));
});

希望这对某人有所帮助:)

答案 2 :(得分:0)

  calendar.batchRendering(() => {
    // remove all events
    calendar.getEvents().forEach(event => event.remove());
    // add your new events source
    calendar.addEventSource(events);
  });