Ich versuche eine Route zu schreiben, die Zugriff auf das Elternmodell benötigt. Ich verwende this.modelFor()
, aber wenn ich das tue, ist das Elternmodell nicht vollständig geladen, so dass alle seine Eigenschaften null
enthalten.
Dies ist der Router mit zwei dynamischen Segmenten:
%Vor%Das ist meine GameRoute, die perfekt funktioniert:
%Vor% Und schließlich ist dies die Kinderroute, die Zugriff auf das Spielmodell benötigt, und das ist, was ich geschrieben habe. Aber egal was ich mache, die console.log()
gibt immer null
aus. Wenn ich die Variable game
überprüfe, ist die Eigenschaft isLoad
immer Null:
Tue ich etwas falsch oder (wie ich vermute) fehlt mir ein Ember-Konzept?
Dieser Teil Ihres Codes sieht gut aus. Ihre Annahmen sind insofern richtig, als die verschachtelte Route das Modell des Elternteils über modelFor
erhalten soll.
Ich vermute, dass Ihre Suchmethode die Ursache des Fehlers ist. Ich habe mir deine vorherige Frage angeschaut und gehe davon aus Game.find
wird hier verwendet (?)
Das Problem liegt in Promises
. Embers Router versteht die asynchrone Natur des model
Hooks. Aber es hängt davon ab, dass du Promise
zurückschickst, um seine Arbeit zu erledigen. Derzeit verwenden Sie die jQuery-Zusage, geben das Objekt game
jedoch sofort im nicht initialisierten Status zurück. Die Abfrage wird vom Server geladen, aber der model()
-Hook wird vermutlich vor diesem Ereignis aufgelöst.
Sie möchten die jQuery Promise
direkt von Ihrem model
hook zurückgeben. + Führen Sie die Analyse in der ersten then
durch und geben Sie diese als Ergebnis zurück.
Hier ist Ihre modifizierte Game.find
. Die gleichen Prinzipien gelten auch für die anderen Finder.
Beachten Sie, dass das Spielobjekt unverändert zurückgegeben wird. Ember versteht, dass das Ergebnis, wenn das Versprechen gelöst wird (indem etwas anderes als ein Versprechen zurückgegeben wird), das Modell für den model()
-Hook ist. Dieses game
-Objekt ist das Modell, das jetzt in modelFor
in der verschachtelten Route verfügbar sein wird.
Tags und Links javascript ember.js