Sieht so aus, als ob es sich nicht um ein Problem handelt, das mit dem Winkelbereich zusammenhängt, es ist reiner JavaScript-Bereich, mit dem Sie Probleme haben. Wenn Sie asynchrone Aufrufe in der Schleife ausführen, erhalten Sie jedes Mal das letzte Element. Um es zu beheben, sollten Sie Versprechen innerhalb der Schleife mit anonymen Funktionen umhüllen.
prüfen dieses klassische Beispiel (Sie können denken, dass setTimeout-Funktion Ihres Question.questionsByQuestionGroup({id:group[i].id}).$promise
äquivalent ist, sie beide Asynchron-Funktionen sind)
//THIS IS EQUIVALENT TO YOUR CASE
//In this case it will return each time last element, 5 in this case
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i)
});
}
//Result: 5 5 5 5 5
//THIS IS HOW YOU SHOULD REFACTOR
//Make a wrapper for async, and it will work as needed
for (var j = 0; j < 5; j++) {
(function(index) {
setTimeout(function() {
console.log(index)
});
})(j);
}
//Result: 0 1 2 3 4
P. S. Nachdem Sie es mit Wrappern behoben haben, wird Ihr Code noch unlesbarer sein, besser um ihn in separate Funktionen umzuwandeln.
Bitte versuchen Sie mit $ scope. $ Apply() nach dem Aktualisieren von Teilfragen. – Dede
Ich habe versucht, aber ich bekomme null Daten –
$ Verdauen bereits in Bearbeitung –