AngularJS / Restangular routing "Eigenschaft 'route' von undefined kann nicht gesetzt werden

8

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?

    
Mark L 25.06.2013, 08:04
quelle

2 Antworten

19

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.

    
James Oakley 30.06.2013 01:54
quelle
8

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 werden

Lass es mich wissen, wenn ich dir noch mehr helfen kann!

    
mgonto 26.06.2013 00:30
quelle

Tags und Links