AngularJS + Fullcalendar发送错误TypeError:无法读取未定义的属性’__id’

我在我的网站上使用angular-ui-calendar。 在控制器中,我写了这个:

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

当我点击一个按钮时,我执行get请求并从服务器获取数据,处理它并生成事件objets并放入我的范围。

当我完成它,日历显示这个错误:

 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) 

需要我对事件进行_id ..?

我得到了同样的错误,修复它的一种方法是,初始化事件数组$ scope.events = []然后发出http请求

使用此参考:

 searchObject.technician.__id 

没有定义searchObject.technician就是问题所在。

这是ui-calendar( 这里 )的错误。 您是否为ui-calendar添加了ng-model属性?

 

此外,在init() ,似乎$scope.events是一个空数组。 所以我认为你可以直接传递它。

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

我遇到了同样的问题。 它归结为您定义所有内容的顺序。 为了安全起见,最好最后宣布您的活动来源。

HTML:

 

控制器:

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