动态地将事件添加到事件源

时间:2014-08-07 00:03:06

标签: javascript fullcalendar

感谢您的项目!真的很好!

我目前正在尝试将完整日历从v1升级到v2。 由于升级到v2页面文档,我修复了所有主要问题。

我现在陷入一个概念问题......

我的日历显示用户的事件。 每个用户都由事件源代表。 事件来源基本上是一系列事件。 当我为用户添加事件时,我希望以动态方式将其添加到用户的事件源中。这样,我总是在日历上显示源和显示事件之间的完全匹配。

我成功地在v1中实现了这个用例,如下所示:

private void addEventToSource(Event event) {
  // get user 
  String userId = event.getUserId();
  // get source for user (sources is a map user -> JsonObject)
  JSONObject source = sources.get(userId);
  // get the list of events
  JSONArray array = (JSONArray)source.get("events");
  // add event at the end of the list
  array.set(array.size(), createJsonEvent(event));
  // refetch events from all sources
  refetchEvents();

}

此代码很有效,这要归功于用户的来源之前已知全日历js:<​​/ p>

private static native void addSource(String calendarId, JavaScriptObject source) /*-{
  $wnd.jQuery("#"+calendarId).fullCalendar('addEventSource', source);

} - * /

在内部,我的所有更新都是通过JSON操作在源对象上完成的。当我重新提取活动时,我的所有用户都会#来源是最新的,并在日历上很好地显示。

但是,此代码在v2上不起作用。我发送到完整日历的源似乎与内部用于显示事件的源不同。我在源上的所有更新都不会应用于内部数据,因此在日历上不可见。

有没有办法让内部事件来源使用? 有没有想过实现这样一个用例?也许我错过了什么...... 提前谢谢!

朱利安

1 个答案:

答案 0 :(得分:0)

您可以查看以下内容:

$('#calendar').fullCalendar('removeEventSource', source)
$('#calendar').fullCalendar('refetchEvents')
$('#calendar').fullCalendar('addEventSource', newSource)
$('#calendar').fullCalendar('refetchEvents');

您甚至可以删除所有事件并根据需要添加它们。这取决于你在做什么。 http://fullcalendar.io/docs/event_data/removeEvents/

BTW朱利安 - 你最有可能通过发布Java来吓跑响应者 - 而不是Javascript。发布更多javascript代码以获得更准确的答案。