RefetchEvents FullCalendar

时间:2011-01-06 13:57:56

标签: jquery fullcalendar

我有两个人可以同时访问FullCalendar应用程序,但是从不同的计算机,他们会看到对方的约会更新而不按刷新按钮,我已经尝试过RefetchEvents但没有。你做有任何建议。非常感谢

1 个答案:

答案 0 :(得分:2)

refetchEvents应该从所有来源获取事件并重新渲染它们,所以我很好奇什么是失败的。此外,当有变化时,它们如何被推送到您的服务器?或者这些变化只留在客户端?您需要确保将每个客户端的事件保存到服务器,以便其他客户端可以获取它们。您可以通过clientEvents对FullCalendar的调用来检查您当前是否在客户端存储新事件。看看它给你带来了什么。如果是这样,请确保在通过select或您正在使用的任何其他方法添加事件时添加要将其保存到服务器的事件。

您可以定期轮询它。设置定期调用setInterval的Javascript refetchEvents。这种方法的缺点是它将不断重绘事件。您还可以轮询服务器,只查看包含事件的数据库或其他源已更新的时间戳,并且仅在更新时调用refetchEvents。如果您使用支持它的服务器,您还可以考虑使用comet从服务器推送信息。

如果我正在进行某种民意调查,我会尝试这样做:

// set this before calling the calendar
var timeLastUpdated = new Date().getTime(); 

function pollForNewEvents() {
    var url = "/path/to/server/check";
    $.get(url, {"timeLastUpdated": timeLastUpdated}, function(data) { 
        data = parseInt(data, 10); // assume data is milliseconds since epoch
        if(data > timeLastUpdated) {
            $("#calendar").fullCalendar('refetchEvents')
            timeLastUpdated = data;
        }
    });
}

setInterval("pollForNewEvents()", 10000);