感谢这个项目!真漂亮!
我目前正在尝试将完整日历从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代码以获得更精确的答案