Merci @Arkshine ! Je pense comprendre comment passer des actions dans un composant Glimmer en général. Cependant, l’aide route-action s’est déplacée le long de la hiérarchie des routes pour invoquer une action qui n’est pas déclarée dans la portée locale. Vous pourriez donc simplement la déclarer sur le composant, par exemple :
Je pourrais simplement travailler sur le template, me soucier moins de la logique invoquée car elle est automatiquement transmise (de mon point de vue :). Ce que j’aimais, mais je ne comprends pas si c’était une bonne pratique et si/comment j’y aurais accès maintenant dans un composant Glimmer.
Vous avez raison ; c’est de ma faute. J’ai répondu automatiquement sans trop réfléchir. (enfin, il était 5h du matin ).
Je n’ai pas la réponse à votre question pour le moment, mais je reviendrai vers vous si je trouve quelque chose de mon côté !
import { get } from "@ember/object";
import { routeAction } from 'discourse/helpers/route-action';
{{on "click" (routeAction "showLogin" (get this "router._router"))}}
Cela suppose que vous avez le service router défini dans le composant.
Je ne suis pas sûr si cela est considéré comme une mauvaise pratique. Cela ne semble pas être une bonne idée, mais ça fonctionne.
Bon, je vais peut-être laisser tomber pour l’instant, le composant fonctionne bien tel quel. J’essaie juste de mieux comprendre comment certaines choses fonctionnent en coulisses
Je pense que si vous utilisez l’exportation par défaut, cela devrait fonctionner comme prévu (c’est-à-dire sans avoir besoin d’injecter le service routeur, ou de lui passer manuellement une référence)
import routeAction from "discourse/helpers/route-action";
(Je ne suis pas sûr pourquoi il y a aussi une fonction interne exportée sous le nom de routeAction… assez déroutant ! Corrigeons cela)
Bien que je dirais… en général, nous essayons de nous orienter vers des « actions de fermeture » comme {{on \"click\" this.someFunction}} plutôt que vers des choses basées sur des chaînes comme {{action \"blah\"}} ou {{routeAction \"blah\"}}.