Я относительно новичок в AngularJS, и я получаю сообщение об ошибке, которое я не совсем понимаю. На этом блоке кода я получаю ошибку типа (см. Ниже). Ошибка указывает мне на строку с sprint.users, которая представляет собой массив пользователей.
$scope.countThisUserSprintsCompleted = function (user) {
var thisUserTotalSprintsCompleted = 0;
angular.forEach($scope.sprints, function(sprint) {
angular.forEach(sprint.users, function (sprintUser, index) {
if(sprintUser.username == user.username && sprint.status == 'complete') {
thisUserTotalSprintsCompleted++;
}
});
});
return thisUserTotalSprintsCompleted;
};
angular.js:13642 TypeError: Cannot read property 'users' of undefined
at userController.js:2123
at Object.q [as forEach] (angular.js:336)
at m.$scope.countThisUserSprintsCompleted (userController.js:2122)
at fn (eval at compile (angular.js:14539), <anonymous>:4:357)
at m.$digest (angular.js:17211)
at angular.js:17417
at e (angular.js:5912)
at angular.js:6191
Это означает, что с предоставленным кодом этот sprint
не определен.
Поскольку вы должны получать sprint
в angular.forEach
обратного вызова это, вероятно, undefined
значение внутри $scope.sprints
.
В качестве примера:
[1, undefined, 2].forEach(function(value){
console.log(value);
});
Чтобы исправить это (больше патча), вы можете добавить проверку перед использованием sprint
:
[{ test: "value" }, undefined, { test: "other value" }].forEach(function(value){
if (value) console.log(value.test);
});
Если вы не ожидаете undefined
значения в этот момент, вы должны исследовать $scope.sprints
перед входом в forEach
и попытаться устранить проблему там.
sprint
не определен.