问题
im using angular-ui-calendar in my website. In the controller, i have writed this:
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;
});
When i do click in a button i do a get request and get data from server, process it and generate events objets and put in my scope.
When i finish it, calendar show me this error:
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)
Need i to put an _id on events..?
回答1:
I got the same error, one way to fix it is, initiliaze the event array $scope.events=[] and then make the http request
回答2:
Using this reference:
searchObject.technician.__id
without defining searchObject.technician
is the issue.
回答3:
This is error from ui-calendar(here). Did you add the ng-model attribute for ui-calendar?
<div ui-calendar ng-model="eventSources"></div>
Also, after init()
, It seems to be $scope.events
is a empty array. So I think you can pass it directly.
$scope.eventSources = $scope.events; // this is an array.
回答4:
I ran into the same problem. It comes down to the order in which you define everything. To be safe, your better off declaring your event sources last.
Html:
<div ui-calendar ng-model="eventSources"></div>
Controller:
$scope.events = [
{title: 'Long Event',start: new Date()}
];
$scope.eventSources = [$scope.events];
来源:https://stackoverflow.com/questions/24181544/angularjs-fullcalendar-send-error-typeerror-cannot-read-property-id-of-un