如何在主题组件中重新执行脚本

主题组件中的脚本仅执行一次;当路由发生变化(非完整页面刷新)时,如何重新执行它们?

例如,我希望组件中的脚本在标签页之间导航后仍能执行。

<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // 你的代码
    });   
</script>

如果我在构建主题组件,这段代码应该放在哪里?这是我目前的代码。我试图在每次路由变化时重新渲染页脚,以便脚本能够重新执行。

我遇到了一些奇怪的错误。

我完全是个新手,不知道这样做是否正确。

    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);
          }
        });
      }
    });

你有没有尝试查看其他类似 #theme-component 的现有设计、工作或代码,以获取一些实施思路?

我看过一些,但它们似乎没有我想要的功能。我想我会再查看更多的主题组件。

谢谢 @osioke@michaeld :raised_hands:,在浏览了这个主题组件后,我找到了我一直在寻找的内容: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