2011-01-06 9 views
2

Ich habe zwei Personen, die sie Zugriff auf FullCalendar-Anwendung in der gleichen Zeit haben, aber von anderen Computer, sie würden die Updates der Termine der anderen ohne Drücken der Schaltfläche Aktualisieren sehen, habe ich mit RefetchEvents aber nichts ausprobiert. Hast du einen Vorschlag? Vielen DankRefetchEvents FullCalendar

Antwort

2

refetchEvents sollte die Ereignisse aus allen Quellen bekommen und sie neu rendern, also bin ich gespannt, was scheitert. Auch wenn es Änderungen gibt, wie werden sie auf Ihren Server übertragen? Oder bleiben die Änderungen nur auf dem Client? Sie müssen sicherstellen, dass Sie die Ereignisse von jedem Client auf dem Server speichern, damit der andere Client sie abrufen kann. Sie können überprüfen, ob Sie gerade neue Ereignisse auf der Client-Seite mit dem clientEvents Aufruf von FullCalendar speichern. Schau, was es dir zurückgibt. Ist dies der Fall, stellen Sie sicher, dass beim Hinzufügen eines Ereignisses über select oder einer anderen Methode, mit der Sie Ereignisse hinzufügen, die Sie auf dem Server speichern.

Sie können regelmäßig danach suchen. Richten Sie ein Javascript setInterval ein, das refetchEvents regelmäßig aufruft. Der Nachteil dieses Ansatzes ist, dass er die Ereignisse kontinuierlich neu streicht. Sie können den Server auch nur für einen Zeitstempel abfragen, in dem Ihre Datenbank oder eine andere Quelle, die die Ereignisse enthält, aktualisiert wurde, und nur refetchEvents beim Aktualisieren aufrufen. Wenn Sie einen Server verwenden, der dies unterstützt, können Sie auch die Verwendung von Comet zum Übertragen von Informationen von Ihrem Server in Betracht ziehen.

Wenn ich eine Art Umfrage tat, ist hier, was ich versuchen würde:

// 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);