2016-07-28 4 views
0

Ich bin relativ neu in AngularJS und ich bekomme einen Fehler, den ich nicht vollständig verstehe. Auf diesem Codeblock erhalte ich einen Typfehler (unten aufgeführt). Der Fehler verweist mich auf die Zeile mit sprint.users, die ein Array von Benutzern ist.Getting TypeError auf angular.forEach

$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

Es bedeutet, dass 'sprint' mit dem bereitgestellten Code nicht definiert ist. –

+0

Nicht so schnell @hängt, schauen Sie sich die Zeile über – Damiano

+0

@Damiano können Sie setzen, was Sie wollen, als param, bedeutet nicht, dass sie definiert werden, wenn sie aufgerufen werden. –

Antwort

0

Es bedeutet, dass sprint mit dem bereitgestellten Code nicht definiert ist.

Da Sie sprint im angular.forEach Callback bekommen sollen, ist es wahrscheinlich ein undefined Wert innerhalb $scope.sprints.

Als Beispiel:

[1, undefined, 2].forEach(function(value){ 
 
    console.log(value); 
 
});

Zur Behebung dieses (mehr eines Pflasters), könnten Sie einen Scheck hinzufügen, bevor Sie sprint:

[{ test: "value" }, undefined, { test: "other value" }].forEach(function(value){ 
 
    if (value) console.log(value.test); 
 
});

Wenn Sie an diesem Punkt keinen Wert von undefined erwarten, sollten Sie den Fehler $scope.sprints untersuchen, bevor Sie die forEach eingeben und versuchen, das Problem dort zu beheben.

+0

Ich überprüft mit der console.log() und keine Null-Werte. Ich benutze Firebase für Daten und ich denke, mein Problem ist, dass ich die $ scope.sprints erzeuge, bevor es die Daten aus der Firebase DB liest. – tvandezande

+0

danke für die Hilfe, aber zurück zu Debugging half mir, es zu finden. – tvandezande

+0

@tvandezande Der beste Weg, jemandem auf SO zu danken, ist eine Upvote! –

Verwandte Themen