2017-10-12 1109 views
2

我在我的POC项目中使用FullCalendar。我有两个数据网格(使用jTable)。我想在那里放一些行,点击'发送请求'然后JSON被创建。它被发送到我的后端应用程序,然后处理它并返回响应(仍在JSON中)。我的AJAX成功处理程序接受此响应并将其转换为JavaScript对象以便放入日历中。本地变量Fullcalendar刷新事件

只要我有建设这样的:

$.post({ 
    // options cut for clean output 
    success: function(data, textStatus, jqXHR) { 
     var eventsToPut = []; 

     $.each(data.taskList, function(k, v) { 
      // OBJECT is created when processing response 
      eventsToPut.push (OBJECT); 
     }); 

     $('#calendar').fullCalendar({ 
      events: eventsToPut, 
      // config of calendar cut 
     });   
    }        
}); 

它工作正常。响应正在呈现并且事件显示在日历上。问题是当我更改数据网格中的数据并将请求重新发送到后端时。响应有效,但日历不刷新事件。

因此,我决定使用EMPTY事件将创建的日历提取到jQuery.ready()部分,并在事件发生时尝试刷新/更新日历。到目前为止,我已经尝试过我的'成功'处理程序:

$('#calendar').fullCalendar('refetchEvents'); //It should work with feeds but I've tried anyway 
$('#calendar').fullCalendar({ events: eventsToPut}); 
$('#calendar').fullCalendar('updateEvents', eventsToPut); 

但是,日历不会刷新数据。任何人都可以帮助我使用新数据刷新日历吗?

+0

如何使用['addEventSource']( https://fullcalendar.io/docs/event_data/addEventSource/)在你的成功回调?随着新的事件。您可能还必须先删除先前的事件。 –

回答

1

首先,请从日历中所有活动通过removeEvents

$('#calendar').fullCalendar('removeEvents', function() { return true; }); 

然后,你可以使用addEventSource添加新的事件

var eventsToPut = []; 

$.each(data.taskList, function(k, v) { 
    // OBJECT is created when processing response 
    eventsToPut.push(OBJECT); 
}); 

$('#calendar').fullCalendar('addEventSource', eventsToPut, true); 
+0

它的工作原理,但问题是,以前的任务仍然存在(例如,如果我只是编辑现有的任务)返回的响应再次呈现。 – Chlebik

+0

我已经修复了它:$('#calendar')。fullCalendar('removeEventSources'); – Chlebik