Obrigado @Arkshine! Acho que entendi como passar ações em um componente Glimmer em geral. No entanto, o helper route-action se moveu pela hierarquia de rotas para invocar uma ação que não é declarada no escopo local. Então você poderia apenas declará-la no componente, por exemplo:
Eu poderia apenas trabalhar no template, me importar menos com a lógica invocada porque ela é passada magicamente (do meu ponto de vista :). O que eu gostei, mas não entendo se essa já foi a melhor prática e se/como eu teria acesso a isso agora em um componente Glimmer.
Você tem razão; foi mal. Respondi automaticamente sem pensar muito. (bem, eram 5 da manhã ).
Não tenho a resposta para sua pergunta agora, mas entrarei em contato se descobrir algo do meu lado!
import { get } from "@ember/object";
import { routeAction } from 'discourse/helpers/route-action';
{{on "click" (routeAction "showLogin" (get this "router._router"))}}
Pressupõe que você tenha o serviço router definido no componente.
Não tenho certeza se é considerado uma má prática. Não parece uma boa ideia, mas funciona.
Bem, talvez eu desista por enquanto, o componente funciona bem como está. Apenas tentando entender um pouco melhor como algumas coisas funcionam nos bastidores
Acho que se você usar a exportação padrão, isso deve funcionar como esperado (ou seja, sem precisar injetar o serviço router, ou passar manualmente uma referência para ele)
import routeAction from "discourse/helpers/route-action";
(não tenho certeza por que também há uma função interna exportada como routeAction… bastante confuso! Vamos consertar isso)
Embora eu diria… em geral, estamos tentando nos mover em direção a ‘closure actions’ como {{on \"click\" this.someFunction}} em vez de coisas baseadas em strings como {{action \"blah\"}} ou {{routeAction \"blah\"}}.