Mit gotoDate in fullCalendar mit Angular UI

Ich habe setup ein Kalender mit FullCalendar mit Angular UI. Es funktioniert gut, ich kann Umschalten Kategorien von Ereignissen nett, aber jedes mal, wenn die Ereignisquelle ist, aktualisiert der Kalender-Ansicht auf das aktuelle Datum.

Ich habe versucht, mit der gotoDate Methode, und ich kann sehen, dass es funktioniert (es funktioniert auch in der Konsole), aber fast sofort nach der Kalender wird zurückgesetzt, um das aktuelle Datum. Als ich bin neu in AngularJS ich habe wahrscheinlich sogar die gotoDate an der falschen Stelle. Aber ich bin zu ahnungslos waren, um es an anderer Stelle.

Ich bin mit einem service, gibt eine Reihe von event-Objekten und schiebt Sie in eventSources das ng-Modell von dem Kalender-element. Nichts besonderes, im controller habe ich:

$scope.eventSources = [];
var promise = UserCalendarEvents.get(groupName);
promise.then(
    function(events) {
        $scope.eventSources.push(events);
        $('#events-calendar').fullCalendar('gotoDate', 2012, 11);
    },
    function(reason) {
        console.log('Error: ' + reason);
    }
);

In diesem Fall werden Ereignisse abgerufen werden und $scope.eventSources gefüllt ist. Der Kalender wird dann bis Dezember 2012 und nach, dass fast sofort, die anzeigen Swithes bekommen, um das aktuelle Datum ein. Ist es eine Art Uhr des ng-Modells, das rerenders die fullcalender und wenn ja, wie kann ich das Datum der Wahl?

Update: ich endete mit joshkurz beheben, aber in einer modifizierten version, die Auszeichnung der ausgewählten Ansicht, dh wenn der Benutzer ausgewählt hat, basicWeek und änderungen Quelldaten der Blick sollte sich nicht ändern, um zum Beispiel in der Monatsansicht. Das ist es, was ich brauche für meine Nutzer.

    function update() {
        scope.calendar = elm.html('');
        var view = scope.calendar.fullCalendar('getView');
        var m;
        var xtraOptions = {};
        //calendar object exposed on scope
        if(view){
          var viewDate = new Date(view.start);
          if(m !== 'Invalid Date'){
            y = viewDate.getFullYear();
            m = viewDate.getMonth();
            d = viewDate.getDate();
            if(!isNaN(y) && !isNaN(m) && !isNaN(d)){
              xtraOptions = {
                year: y,
                month: m,
                date: d
              };
            }
          }
          view = view.name; //setting the default view to be whatever the current view is. This can be overwritten.
        }
        /* If the calendar has options added then render them */
        var expression, 
            options = { defaultView : view, eventSources: sources };
        if (attrs.uiCalendar) {
            expression = scope.$eval(attrs.uiCalendar);
            //Override defaultView if is set in ui-calendar attribute - OK? 
            if (expression.defaultView) {
                expression.defaultView = view;
            }     
        } else {
            expression = {};
        }
        angular.extend(options, uiConfig.uiCalendar, expression, xtraOptions);
        scope.calendar.fullCalendar(options);

      }
InformationsquelleAutor John P | 2013-03-28
Schreibe einen Kommentar