2017-07-05 5 views
0

Neu zu Ember hier. Ich versuche herauszufinden, wie man eine Aktion ausführt und das Produkt dieser Aktion wird vom #with Helfer verwendet. Im Folgenden ist ein Beispiel für meinen Code:Führen Sie Aktionen innerhalb des mit Helfer

{{#navigation-container as |navigationContainer|}} {{#with (action navigationContainer.previousPage model) as |prev|}} {{link-to (t 'navigation.previous') (concat 'course-run.' prev.modelName) prev activeClass="o25" title=prev.title}} {{/with}} {{/navigation-container}}

navigation-container ist eine Komponente, die ein paar Aktionen aussetzt, von denen previousPage ist. previousPage gibt einfach ein Modell zurück, das ich dann verwende, um einige Links zu erstellen und mit Ember-Tastatur zu verwenden.

Ich erhalte eine Fehlermeldung, dass die link-to keine Route erstellen kann, da prev nicht definiert ist. Die Aktion wird gerade über diesem with Block ausgeführt und zurückgegeben, also gehe ich davon aus, dass der with Block das Problem ist.

Danke für jede Hilfe!

+0

Es ist in Ordnung, eine Aktion mit dem folgenden '{{#mit (action navigationContainer.previousPage-Modell) als | prev |}} 'Code-Snippet zu erstellen; aber was bedeutet 'prev.modelName'? 'prev' selbst ist eine Funktion und enthält keine Eigenschaft namens' modelName'. Die Aktion läuft nicht selbst in der Vorlage mit dieser Deklaration; Sie müssen es an eine Komponente übergeben und in einer js-Datei ausführen. Was Sie erreichen wollen, ist verwirrend, wenn nicht unmöglich, wenn das, was ich verstanden habe, richtig ist. Können Sie sagen, was Sie erreichen möchten? Versuchen Sie, die Aktion innerhalb der Schablone oder des STHs auszuführen. sonst? – alptugd

Antwort

0

Ich denke, du hast das falsch verstanden. Der with Helfer erlaubt Ihnen nicht, eine Aktion auszuführen. Das Ergebnis von (action navigationContainer.previousPage model) ist im Grunde genommen eine neue Schließfunktion, die navigationContainer.previousPage mit dem ersten Parameter model ausführt und die nächsten Parameter sind die Parameter, die Sie Ihrer neuen Funktion geben.

Also, wenn Sie so etwas wie <button onclick={{action prv "bar"}}></button> tun dies in der Funktion navigationContainer.previousPage führt mit dem ersten Parameter model und die nächsten "bar" ausgeführt werden.

Wenn Sie das Ergebnis einer Funktion in Ihrer Vorlage haben möchten, müssen Sie eine berechnete Eigenschaft verwenden.

Verwandte Themen