Comment réexécuter des scripts dans les composants de thème

Les scripts dans les composants de thème ne s’exécutent qu’une seule fois ; comment les réexécuter lors d’un changement de route (sans rechargement complet de la page) ?

Par exemple, je souhaite que les scripts d’un composant s’exécutent même après une navigation entre les onglets.

1 « J'aime »
<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // votre code
    });   
</script>
6 « J'aime »

Où devrais-je placer cela si je construis un composant de thème ? Voici mon code pour le moment. J’essaie de réafficher le pied de page à chaque changement de route afin que les scripts soient réexécutés.

Je rencontre des erreurs étranges.

Je suis un débutant complet, et je ne sais pas si c’est la bonne approche.

    initialize() {
      withPluginApi("0.8", api => {
        if (settings.Show_footer_on_login_required_page) {
          api.modifyClass("controller:static", {
            @on("init")
            showFooterOnStatic() {
              this.set("application.showFooter", true);
            }
        });

        api.onPageChange(() => {
          showFooterOnStatic() {
            this.set("application.showFooter", true);
          }
        });
      }
    });
1 « J'aime »

Avez-vous essayé de consulter des travaux antérieurs, du code ou des recherches dans un autre composant #theme-component similaire pour obtenir des pistes sur la manière de procéder ?

1 « J'aime »

J’en ai examiné quelques-uns, mais ils ne semblent pas correspondre à ce que je cherche. Je vais donc en consulter d’autres, en particulier des composants de thème.

1 « J'aime »

Merci, @osioke, et @michaeld :raised_hands:, j’ai trouvé exactement ce que je cherchais après avoir examiné ce composant de thème : Homepage Feature

https://github.com/discourse/discourse-homepage-feature-component/blob/main/javascripts/homepage-featured-topics/connectors/above-main-container/homepage-featured-topics.js.es6

4 « J'aime »