Come rieseguire gli script nei componenti del tema

Gli script nei componenti del tema vengono eseguiti solo una volta; come si può rieseguirli al cambiare della rotta (senza un ricaricamento completo della pagina)?

Ad esempio, desidero che gli script in un componente vengano eseguiti anche dopo la navigazione tra i tag.

1 Mi Piace
<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // il tuo codice
    });   
</script>
6 Mi Piace

Dove andrebbe inserito questo se sto costruendo un componente del tema? Questo è il mio codice al momento. Sto cercando di ridisegnare il footer ogni volta che cambia la rotta, in modo che gli script vengano rieseguiti.

Sto ottenendo errori strani.

Sono un principiante assoluto e non so se questo sia il modo giusto per procedere.

    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 Mi Piace

Hai già dato un’occhiata a lavori o codice preesistenti in un #theme-component simile per trarre spunti su come procedere?

1 Mi Piace

Ne ho visti alcuni, ma non sembrano avere quello che sto cercando di fare. Immagino che ne guarderò altri di tema-componente.

1 Mi Piace

Grazie, @osioke, e @michaeld :raised_hands:, ho trovato esattamente quello che stavo cercando dopo aver esaminato questo componente del tema: 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 Mi Piace