Vielen Dank, @Arkshine! Ich glaube, ich verstehe, wie man Aktionen in einer Glimmer-Komponente im Allgemeinen übergibt. Der route-action-Helper wurde jedoch entlang der Routenhierarchie verschoben, um eine Aktion aufzurufen, die nicht im lokalen Gültigkeitsbereich deklariert ist. Sie könnten sie also einfach in der Komponente deklarieren, z. B.:
Ich könnte einfach an der Vorlage arbeiten und mich weniger um die aufgerufene Logik kümmern, da sie (aus meiner Sicht :)) automatisch übergeben wird. Das gefiel mir, aber ich verstehe nicht, ob das jemals Best Practice war und ob/wie ich jetzt in einer Glimmer-Komponente darauf zugreifen würde.
Du hast Recht; mein Fehler. Ich habe ohne viel nachzudenken automatisch geantwortet. (Nun ja, es war 5 Uhr morgens ).
Ich habe im Moment keine Antwort auf deine Frage, aber ich melde mich bei dir, wenn ich auf meiner Seite etwas herausfinde!
import { get } from "@ember/object";
import { routeAction } from 'discourse/helpers/route-action';
{{on "click" (routeAction "showLogin" (get this "router._router"))}}
Es wird davon ausgegangen, dass Sie den router-Dienst in der Komponente definiert haben.
Ich bin mir nicht sicher, ob dies als schlechte Praxis gilt. Es klingt nicht nach einer guten Idee, aber es funktioniert.
Nun, ich lasse es vielleicht erstmal, die Komponente funktioniert so wie sie ist. Ich versuche nur, ein wenig besser zu verstehen, wie einige Dinge unter der Haube funktionieren
Ich denke, wenn Sie den Standardexport verwenden, sollte er wie erwartet funktionieren (d. h. ohne den Router-Dienst injizieren oder manuell eine Referenz darauf übergeben zu müssen)
import routeAction from "discourse/helpers/route-action";
(Ich bin mir nicht sicher, warum es auch eine interne Funktion gibt, die als routeAction exportiert wird … ziemlich verwirrend! Lassen Sie uns das beheben)
Obwohl ich sagen würde … im Allgemeinen versuchen wir, uns in Richtung ‘Closure Actions’ zu bewegen, wie {{on \"click\" this.someFunction}}, anstatt zeichenbasierte Dinge wie {{action \"blah\"}} oder {{routeAction \"blah\"}}.