动态地向事件源添加事件



感谢这个项目!真漂亮!

我目前正在尝试将完整日历从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();

}

这段代码工作得很好,这要归功于一个事实,即用户的源代码以前是由full-calendar js知道的:

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

} - */;

在内部,所有的更新都是通过JSON操作在源对象上完成的。当我重新获取事件时,所有用户的源都是最新的,并且很好地显示在日历上。

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

是否有一种方法来获得使用事件的内部源?有实现这样一个用例的想法吗?也许我错过了什么……提前感谢!

朱利安

您可以查看如下内容:

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

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

顺便说一句,Julian -你很可能因为发布Java而不是Javascript而吓跑了回复者。请发布更多javascript代码以获得更精确的答案

相关内容

  • 没有找到相关文章

最新更新