在jquery fullcalendar中,我可以在不刷新整个月的情况下添加新事件吗?

leo*_*ora 15 jquery fullcalendar

我使用的是jquery fullcalendar,效果很好.我的事件来自ajax调用并以json的形式返回.

我试图找出是否有办法从客户端添加事件而不刷新整个服务器.

我能够在我的代码中添加一个新事件(将其添加到我的数据库中),但我知道如何刷新UI以显示这个新事件的唯一方法是调用refetchevents(但这会重新加载本月的所有内容)服务器.

无论如何,我可以坚持所有客户端的其他活动,以避免整个月的事件刷新?

我看到我可以通过removeEvents方法逐个删除事件(带有id过滤器),但我没有看到有关添加事件的等价物.

更新:

我有一个后续问题,下面的答案都有效.(创造另一个问题没有意义).我想看看在客户端上"刷新"单个事件的推荐方法.我试图简单地用一个具有相同Id的事件调用'renderEvent'但是在日历上创建一个新事件.

我看到有:UpdateEvent方法,我认为这将是答案,但似乎这只有在你在一个eventClick内时才有效(你不能只创建一个新的事件对象,设置Id并更改一个字段并调用更新.

 http://arshaw.com/fullcalendar/docs/event_data/updateEvent/
Run Code Online (Sandbox Code Playgroud)

是否有推荐的方法从客户端刷新事件,类似于下面的"添加客户端"事件逻辑?

现在我只是在这样的事件中删除和读取:

       $('#calendar').fullCalendar('removeEvents', data.Event.id);
       $('#calendar').fullCalendar('renderEvent', data.Event, true);
Run Code Online (Sandbox Code Playgroud)

小智 40

要将客户端上的事件添加到fullCalendar中,您可以调用:

var myCalendar = $('#my-calendar-id'); 
myCalendar.fullCalendar();
var myEvent = {
  title:"my new event",
  allDay: true,
  start: new Date(),
  end: new Date()
};
myCalendar.fullCalendar( 'renderEvent', myEvent );
Run Code Online (Sandbox Code Playgroud)

我没有测试过这段代码,但这应该可以完成工作.


小智 9

这是我使用的代码:

function addCalanderEvent(id, start, end, title, colour)
{
    var eventObject = {
    title: title,
    start: start,
    end: end,
    id: id,
    color: colour
    };

    $('#calendar').fullCalendar('renderEvent', eventObject, true);
    return eventObject;
}
Run Code Online (Sandbox Code Playgroud)