Ich habe ein AngularJS-basiertes Frontend, das Restangular verwendet, um Datensätze von einem Django-Backend zu holen, das ich gebaut habe.
Ich rufe eine Client-Liste mit folgenden Optionen an:
%Vor%Chrome zeigt dem Back-End Daten mit einem HTTP 200 zurück:
%Vor%Aber sobald das passiert, sehe ich die folgende Stapelverfolgung in der Chrome-Konsole:
%Vor%Ich habe einen Breakpoint in Zeile 395 in restangular.js gemacht:
%Vor% Beim ersten Zugriff auf den Breakpoint ist elem
nur ein Objekt und route
hat den Wert von client
.
Beim zweiten Mal wird der Haltepunkt erreicht elem
ist nicht definiert und route
hat den Wert von client
.
Irgendwelche Ideen, warum elem
beim zweiten Mal undefiniert wäre?
Beim Anfordern von Listen erwartet Restangular, dass die Daten vom Server ein einfaches Array sind. Wenn die resultierenden Daten jedoch mit Ergebnismetadaten wie Paginierungsinformationen umhüllt werden, fällt sie auseinander.
Wenn Sie Django REST Framework verwenden, werden die Ergebnisse wie folgt zurückgegeben:
%Vor%Um dies zu übersetzen, müssen Sie eine Antwort-Extraktorfunktion erstellen. Es ist am einfachsten, in der Modulkonfiguration anzugeben:
%Vor%Dies ordnet die Ergebnisse als einfaches Array an, mit einer zusätzlichen Eigenschaft von _resultmeta, die die Metadaten enthält. Restangular macht es mit dem Array und seinen Objekten und Sie können auf die Eigenschaft _resultmeta zugreifen, wenn Sie das Array wie erwartet behandeln.
Ich bin der Schöpfer von Restangular.
Die restangularizeBase-Funktion wird zuerst für Ihre Sammlung und dann für jedes Ihrer Elemente aufgerufen.
Von StackTrace aus ist das Element in Ordnung, aber sobald die Sammlung an restangularizeBase gesendet wird, ist sie tatsächlich undefiniert. Könnten Sie bitte console.log response.objects? Bitte aktualisieren Sie auch auf die neueste Version.
Außerdem sollten Sie für den Standardanforderungsparameter defaultRequestParams anstelle von requestSuffix verwenden. requestSuffix sollte nur für die Endung "/"
verwendet werdenLass es mich wissen, wenn ich dir noch mehr helfen kann!
Tags und Links javascript angularjs