テーマコンポーネントでスクリプトを再実行する方法

テーマコンポーネント内のスクリプトは1回だけ実行されます。ルート変更(完全なページリロードなし)時にスクリプトを再実行するにはどうすればよいでしょうか?

例えば、タグ間を移動した後でも、コンポーネント内のスクリプトが実行されるようにしたいと考えています。

「いいね!」 1
<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // あなたのコード
    });   
</script>
「いいね!」 6

テーマコンポーネントを作成する場合、これをどこに配置すればよいでしょうか?現在のコードは以下の通りです。ルートが変更されるたびにフッターを再レンダリングし、スクリプトが再実行されるようにしようとしています。

奇妙なエラーが発生しています。

私は完全な初心者なので、これが正しいアプローチなのかどうかもわかりません。

    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

類似の #theme-component における先行技術や既存コードを確認して、アプローチのヒントを得てみるのはどうでしょうか?

「いいね!」 1

いくつか確認しましたが、私がやりたいことに合うものはなさそうです。もっとテーマコンポーネントを見てみるしかないでしょう。

「いいね!」 1

@osioke さん、@michaeld さん、ありがとうございます!:raising_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

「いいね!」 4