2017-02-03 4 views
0

Ich möchte eine dynamische Variable übergeben, die von beforeModel einer Route js zum entsprechenden Vorlagen-Lenker erreicht wird. Ich weiß, dass Modelldaten durch Model Hook übergeben werden können. Dies sind jedoch keine Modelldaten. Es ist auch kein Controller beteiligt, da ich nicht denke, Variable von Route zu Controller zu übergeben, dann sollte die Vorlage nicht der einfachste Weg sein. danke.Wie man die dynamische Ember-Eigenschaft von beforeModel der Route an den Lenker der Vorlage übergibt

Antwort

0

Von ember guides beforeModel hook ist geeignet für Fälle,

1) kann eine Entscheidung getroffen werden, an anderer Stelle umgeleitet werden, ohne dass das Modell zuerst zu lösen.
2) Alle asynchronen Operationen müssen zuerst ausgeführt werden, bevor das Modell aufgelöst werden soll.

so in Ihrem Fall, werde ich Sie ermutigen, dass Zeug in setupController Haken zu tun. Wenn Sie weiterhin Daten von beforeModel an die Vorlage übergeben möchten, dann wäre die vorgeschlagene Lösung, setzen Sie das Ergebnis in route und rufen Sie diese Werte ab und setzen Sie sie im Controller über setupController hook. Hinweis: Sie erhalten für jede Route einen Standard-Controller.

+0

danke für die beratung. Ich werde definitiv SetupController versuchen. Eine Frage: beforeModel ist etwas, das ausgeführt wird, wenn die Route aufgerufen wird. Wird SetupController (wenn keine Aktion) ausgeführt, wenn die Route aufgerufen wird? – bxff01

+0

Ja. setupController wird nach dem Model-Hook aufgerufen. – kumkanillam

+0

nur überprüft, kann immer noch nicht herausfinden, wie SetupController nicht-Modell-Daten übergeben kann. – bxff01

0

Dies sind einige Routendaten, die Sie in Ihrer Vorlage benötigen, das klingt wie Modelldaten für mich!

Außerdem ist immer ein Controller beteiligt, da einer vom Framework als Kontext der Vorlage erstellt wird. Was das bedeutet ist, dass der model() Hook tatsächlich die model Eigenschaft des Controllers setzt, und alle {{property}}, die Sie in Ihrer Vorlage nachschlagen, wird im zugehörigen Controller nachgeschlagen.

Übergeben Sie die Daten zusammen mit dem Rest der Daten im model() Hook.

+0

danke alle, in meinem Route Model Hook, ich habe bereits "return RSVP.hash" verwendet, um Modell A und B (von findAll) zu Vorlage erfolgreich zurück. Dann, nach dem Model Hook, versuche ich setupcontroller zu benutzen .../.../const email = user.email/this._super (... argumente) /controller.set ('email', email); bemerkte, dass E-Mail nur eine Variable der aktuellen E-Mail des Benutzers ist, und ich versuche, diese E-Mail von der Vorlage zu erhalten. Danach kann ich in der Vorlage weder "email" noch mein Model A/B bekommen. also weiß ich nicht wo mein Fehler ist .. Irgendwelche Gedanken? – bxff01

+1

Finales Update: Ich endete mit dem, was Locks erwähnt. Ich wusste nicht, dass in Model Hooks RSVP.hash ich mehr als nur this.store.findAll ('xxx') verwenden kann, ich kann auch yyy verwenden: this.get ('zzz') ..... In ein anderes wort, ich habe fälschlicherweise gedacht, dass nur modell, das durch "ember g model" definiert wurde, von RSVP.hash zurückgegeben werden kann. Jetzt funktioniert alles. Danke euch allen für tolle Vorschläge. – bxff01

Verwandte Themen