Получение TypeError на angular.forEach

0

Я относительно новичок в 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
  • 2
    Это означает, что с предоставленным кодом sprint не определен.
  • 0
    Не так быстро @ Guys Up, посмотрите на строку выше
Показать ещё 6 комментариев
Теги:

1 ответ

0

Это означает, что с предоставленным кодом этот 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 и попытаться устранить проблему там.

  • 0
    Я проверил с помощью console.log () и никаких нулевых значений. Я использую firebase для данных и думаю, что моя проблема в том, что я создаю $ scope.sprints до того, как он будет читать данные из базы данных firebase.
  • 0
    спасибо за помощь, хотя возвращение к отладке помогло мне найти его.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню