Cómo volver a ejecutar scripts en componentes de temas

Los scripts en los componentes del tema se ejecutan solo una vez; ¿cómo los vuelvo a ejecutar cuando hay un cambio de ruta (sin recarga completa de la página)?

Por ejemplo, quiero que los scripts en un componente se ejecuten incluso después de navegar entre etiquetas.

1 me gusta
<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // tu código
    });   
</script>
6 Me gusta

¿Dónde debería ir esto si estoy construyendo un componente de tema? Este es mi código por el momento. Estoy intentando volver a renderizar el pie de página cada vez que hay un cambio de ruta para que los scripts se vuelvan a ejecutar.

Estoy obteniendo errores extraños.

Soy un principiante total y no sé si esta es la forma correcta de proceder.

    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 me gusta

¿Has intentado revisar trabajos o código previos en otro #theme-component similar para obtener algunas ideas sobre cómo abordarlo?

1 me gusta

He revisado algunos, pero no parecen tener lo que estoy intentando hacer. Supongo que revisaré más componentes de tema.

1 me gusta

¡Gracias, @osioke, y @michaeld :raised_hands:, encontré exactamente lo que estaba buscando después de revisar este componente de 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 Me gusta