Backbone.js holt nicht wirklich Attribute

8

Ich habe ein grundlegendes Backbone-Modell, sein Attribut urlRoot ist gesetzt, und das entsprechende Ziel auf der Serverseite gibt eine korrekte JSON-Ausgabe zurück (sowohl JSON-String als auch application/json header).

Ich rufe einen Abruf wie folgt auf:

%Vor%

an dieser Stelle, wenn ich ein

hinzufüge %Vor%

Ich kann das Modell sehen und es in Firebug untersuchen. Ich kann das Attributobjekt öffnen und alle vom Server zurückgegebenen Werte sehen.

ABER wenn ich a:

%Vor%

Ich bekomme undefined (der Name erscheint unter den Attributen in der oben erwähnten DOM Inspektion)

macht auch a:

%Vor%

gibt ein Objekt zurück, das nur {id: 1} enthält. Dies ist das Argument, das ich beim Erstellen des Modells übergeben habe.

Wenn ich das Modell so erstelle:

%Vor%

dann funktioniert alles gut, die .get() -Methode gibt zurück, was auch immer ich frage, und athlete.attributes zeigt alle Werte an.

Was mache ich falsch?

    
Matteo Riva 06.03.2012, 13:43
quelle

2 Antworten

18

fetch ist asynchron, was bedeutet, dass die Daten nicht verfügbar sind, wenn Sie nach dem Abruf sofort console.log(athlete.get('name')) aufrufen.

Verwenden Sie Ereignisse, um benachrichtigt zu werden, wenn die Daten verfügbar sind, z. B.

%Vor%

oder fügen Sie Ihrem Abruf einen Rückruf hinzu

%Vor%

oder nutzen Sie das Versprechen von fetch :

%Vor%     
nikoshr 06.03.2012, 14:18
quelle
1

Genau wie eine kurze Bemerkung bei der Verwendung von Ereignissen in diesem Beispiel. Es funktionierte nicht mit change in meinem Fall, da diese Ereignisse bei jeder Änderung ausgelöst werden. Also sync tut es der Trick.

%Vor%     
riasc 20.10.2015 09:58
quelle

Tags und Links