テーマコンポーネントから、作曲器でカテゴリが選択されたときに何らかのコードを実行することは可能でしょうか?作曲器が開かれた直後と、カテゴリのドロップダウンが変更されたときに、それぞれ選択されたカテゴリを取得したいと考えています。
おそらく、作曲器コントローラーのようなコントローラーやコンポーネントを修正することで実現できるかと思ったのですが、カテゴリの情報を特定できませんでした。
テーマコンポーネントから、作曲器でカテゴリが選択されたときに何らかのコードを実行することは可能でしょうか?作曲器が開かれた直後と、カテゴリのドロップダウンが変更されたときに、それぞれ選択されたカテゴリを取得したいと考えています。
おそらく、作曲器コントローラーのようなコントローラーやコンポーネントを修正することで実現できるかと思ったのですが、カテゴリの情報を特定できませんでした。
Composerコントローラーで model.categoryId を監視し、変更が発生したときにコードを実行できます。
@fzngagan さん、ありがとうございます!
追加の質問ですが、これまでこのようなモデルは見たことがありません
。以下のような実装を考えました。どうやら機能しているようです。
const { observes } = require('discourse-common/utils/decorators');
api.modifyClass("controller:composer", {
@observes('model.categoryId')
getCategory() {
let categoryId = this.get("model.categoryId");
if (categoryId == null) return;
let category = this.site.categories.findBy("id", categoryId).name;
}
});
この方法(または推奨される方法)は正しいでしょうか?また、ID からカテゴリ名を取得する最適な方法でしょうか?
model オブジェクトに何が含まれているか確認できます。すでにカテゴリ名が入っているかもしれません。