2014-06-12 9 views
5

im używając angular-ui-calendar na mojej stronie. w sterowniku, mam writed to:AngularJS + Fullcalendar błąd wysyłania TypeError: Nie można odczytać właściwości "__id" o niezdefiniowanym

define(['underscore'], function (_) { 
    "use strict"; 

    var SearchController = function ($scope, $location, OrdersService, UsersService) { 

     /* config object */ 
     $scope.uiConfig = { 
      calendar: { 
       height: 450, 
       editable: true, 
       firstDay: 0, 
       monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], 
       monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'], 
       dayNames: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'], 
       dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'], 
       header: { 
        left: '', 
        center: 'title', 
        right: '' 
       } 
      } 
     }; 
     $scope.eventSources = [$scope.events]; 

     var getTecnicians = function() { 
      UsersService.getTechs().then(function (techs) { 
       $scope.technicians = techs; 
      }); 
     }; 

     var search = function() { 
      var searchObject = $scope.$$childHead.searchForm; 
      UsersService.getCurrentStatus(searchObject.technician._id, searchObject.selectedStartDate).then(function (result) { 
       $scope.states = result[0].states; 
       for (var i = 0; i < $scope.states.length; i++) { 
        var event = {}; 
        if (i === $scope.states.length - 1) { 
         event = { 
          title: $scope.states[i].status, 
          start: $scope.states[i].date, 
          allday: true 
         }; 
        } else { 
         event = { 
          title: $scope.states[i].status, 
          start: $scope.states[i].date, 
          end: $scope.states[i + 1].date 
         }; 
        } 
        $scope.events.push(event) 
       } 
       if (result) { 
        $scope.haveData = true; 
       } 
      }); 
     }; 

     var init = function() { 
      $scope.search = search; 
      $scope.getTecnicians = getTecnicians(); 
      $scope.haveData = false; 
      $scope.events = []; 
     }; 
     init(); 
    }; 

    SearchController.$inject = ["$scope", "$location", "OrdersService", "UsersService"]; 

    return SearchController; 
}); 

Kiedy zrobić kliknij w przycisk robię zamówienie Pobierz i pobrać dane z serwera, to proces i generować zdarzenia objets i umieścić w moim zasięgu.

kiedy skończę to, kalendarz pokazać mi ten błąd:

ypeError: Cannot read property '__id' of undefined 
    at sourcesFingerprint (http://localhost:8000/bower_components/angular-ui-calendar/src/calendar.js:48:24) 
    at Object.changeWatcher.getTokens (http://localhost:8000/bower_components/angular-ui-calendar/src/calendar.js:88:21) 
    at Scope.$get.Scope.$digest (http://localhost:8000/bower_components/angular/angular.js:12243:40) 
    at Scope.$get.Scope.$apply (http://localhost:8000/bower_components/angular/angular.js:12516:24) 
    at done (http://localhost:8000/bower_components/angular/angular.js:8204:45) 
    at completeRequest (http://localhost:8000/bower_components/angular/angular.js:8412:7) 
    at XMLHttpRequest.xhr.onreadystatechange (http://localhost:8000/bower_components/angular/angular.js:8351:11) 

muszę się położyć _id o wydarzeniach ..?

+0

każdej aktualizacji? Otrzymuję ten sam błąd –

+0

możliwy duplikat [angularjs add value Nie można ustawić właściwości 'id' nieokreślonego] (http://stackoverflow.com/questions/24699081/angularjs-add-value-cannot-set-property-id -of-undefined) –

Odpowiedz

5

mam ten sam błąd, jednym ze sposobów, aby to naprawić to, initiliaze tablicę zdarzeń $ scope.events = [] a następnie dokonać żądania HTTP

0

Stosując tę ​​odniesienie:

searchObject.technician.__id 

bez definiowania searchObject.technician jest problem.

0

To jest błąd z kalendarza ui (here). Czy dodano atrybut ng-model dla interfejsu użytkownika?

<div ui-calendar ng-model="eventSources"></div> 

Również po init() Wygląda na to, aby być $scope.events jest pusta tablica. Myślę więc, że możesz przekazać to bezpośrednio.

$scope.eventSources = $scope.events; // this is an array. 
0

wpadłem na ten sam problem. Sprowadza się to do porządku, w którym definiujesz wszystko. Aby być bezpiecznym, lepiej zadeklaruj swoje źródła wydarzeń jako ostatnie.

HTML:

<div ui-calendar ng-model="eventSources"></div> 

Kontroler:

$scope.events = [ 
    {title: 'Long Event',start: new Date()} 
]; 
$scope.eventSources = [$scope.events]; 
Powiązane problemy