¡Gracias @Arkshine! Creo que entiendo cómo pasar acciones en un componente de Glimmer en general. Sin embargo, el helper route-action se movió a lo largo de la jerarquía de rutas para invocar una acción que no está declarada en el ámbito local. Así que podrías simplemente declararla en el componente, por ejemplo:
Podría simplemente trabajar en la plantilla, preocuparme menos por la lógica invocada porque se pasa automáticamente (desde mi punto de vista :). Lo cual me gustó, pero no entiendo si alguna vez fue una buena práctica y si/cómo tendría acceso a eso ahora en un componente de Glimmer.
Tienes razón; me equivoqué. Respondí automáticamente sin pensar mucho. (bueno, eran las 5 am ).
No tengo la respuesta a tu pregunta ahora mismo, ¡pero te responderé si descubro algo por mi parte!
import { get } from "@ember/object";
import { routeAction } from 'discourse/helpers/route-action';
{{on "click" (routeAction "showLogin" (get this "router._router"))}}
Asume que tienes el servicio router definido en el componente.
No estoy seguro de si se considera una mala práctica. No suena como una buena idea, pero funciona.
Bueno, puede que lo deje por ahora, el componente funciona bien tal como está. Solo intento entender un poco mejor cómo funcionan algunas de las cosas internas
Creo que si usas la exportación predeterminada, debería funcionar como se espera (es decir, sin necesidad de inyectar el servicio router, o pasarle manualmente una referencia a él)
import routeAction from "discourse/helpers/route-action";
(no estoy seguro de por qué también hay una función interna exportada como routeAction… ¡bastante confuso! Vamos a arreglar eso)
Aunque diría que… en general estamos tratando de avanzar hacia las ‘closure actions’ como {{on \"click\" this.someFunction}} en lugar de cosas basadas en cadenas como {{action \"blah\"}} o {{routeAction \"blah\"}}.