2012-03-29 12 views
0

Kann mir jemand helfen zu verstehen, wie ich das Startdatum in den Kalender übergeben kann. Ich habe einen Delivery Scheduler-Kalender erstellt und die Lieferdetails in einer Tabelle unter den Kalendern angezeigt, die über die Datenbank gespeist werden. Dies erfordert, dass ich die Seite aktualisiere, wenn ein Benutzer einen Kalendertag auswählt, um die Tabelleninformationen zu laden. Ich kann herausfinden, wie man den Kalender an einem Startdatum startet, das auf der Seite übergeben wird.FullCalendar Übergabe Startdatum

Scheint wie das wäre einfach, aber ich mache etwas falsch.

$ ('# Kalender'). FullCalendar (Optionen); $ ('# Kalender'). FullCalendar ('gotoDate', '2012-10-21');

Antwort

3

Probe basierend auf Dokumentation http://arshaw.com/fullcalendar/docs/current_date/gotoDate/

in diesem Monat Denken Sie daran, ist 0-basiert, so dass 10 bedeutet November.

$(document).ready(function() { 

    var calendar = $('#calendar').fullCalendar({ 
     events:[ 
      { title:'All Day Event', start:new Date(2012, 10, 20)}, 
      { title:'Long Event', start:new Date(2012, 10, 21), end:new Date(2012, 10, 22)} 
     ] 
    }); 

    $('#calendar').fullCalendar('gotoDate', 2012, 10, 21); 

}); 
+0

Dank funktionierte es groß. –

+0

Ich weiß, das ist Code-Schnipsel, an dem ich gerade arbeite;] akzeptiere die Antwort dann. – biesior

+0

Ich gebe dir +1, da er die Antwort nie akzeptiert hat. – Rohrbs

1

Vielen Dank Biesior für Ihre hilfreiche Antwort. Ich konnte Ihren vorgeschlagenen Code verwenden, um das Verhalten zu erhalten, nach dem ich gesucht habe.

Während ich den obigen Ansatz nutze, bemerke ich, dass die Firebug-Konsole zwei AJAX-Datenanforderungen gleichzeitig ausführt, einen für die mit dem aktuellen Datum verknüpfte Ansicht und einen für die mit dem angegebenen gotoDate verknüpfte Ansicht.

Es scheint keine zusätzliche Verzögerung aus Sicht des Benutzers zu geben, und der Kalender zeigt die gewünschte Ansicht von Anfang an an. Callbacks zum Laden werden jedoch mehrfach aufgerufen, was unter Umständen zu merkwürdigem Verhalten führen kann. Es können auch andere unerwünschte Ergebnisse mit der überflüssigen AJAX-Anforderung für das aktuelle Datum verbunden sein.

Ich konnte die unnötige AJAX-Anfrage vermeiden, indem ich den Kalender ohne eine Ereignisquelle initialisiere, dann zum gewünschten Datum gehe, wie von Biesior oben gezeigt, und dann die Ereignisquelle hinzufüge. Die Sequenz ist unten gezeigt. Ich habe einige nicht verwandte FullCalendar-Optionen und Callbacks entfernt, um es übersichtlich zu halten. Es gibt einige zusätzliche AJAX-Parameter und etwas PHP, aber das Wichtigste ist, wenn die Ereignisquelle angegeben wird.

der ursprüngliche Code zu zwei gleichzeitigen AJAX Anfragen:

$('#calendar').fullCalendar({ 
    events: { 
    url:'/Services/GetEvents.php', 
    type: 'POST', 
    data: { 
     lat: <?=$venLatitude?>, 
     lon: <?=$venLongitude?>, 
     userID: <?=$userID?>, 
     distance: <?=$distance?> 
    } 
    } 
}) 
$('#calendar').fullCalendar('gotoDate', <?=(int)substr($startDate,0,4)?>, <?=((int)substr($startDate,5,2))-1?>); 

Diese Anpassung führt zu nur der gewünschten AJAX Anfrage:

 $('#calendar').fullCalendar(); 
     $('#calendar').fullCalendar('gotoDate', <?=(int)substr($startDate,0,4)?>, <?=((int)substr($startDate,5,2))-1?>); 
     $('#calendar').fullCalendar('addEventSource', { 
       url:'/Services/GetEvents.php', 
       type: 'POST', 
       data: { 
        lat: <?=$venLatitude?>, 
        lon: <?=$venLongitude?>, 
        userID: <?=$userID?>, 
        distance: <?=$distance?> 
       } 
      }); 
+0

Fragen Sie hier eine neue Frage? – NetStarter

+0

Sieht für mich aus, als würde er einen Fehler im Vollkalender aufzeigen und den Leuten zeigen, wie man damit umgehen kann. – boatcoder