如何从 composer 获取类别信息?

是否可以在选择分类器中的分类时运行一些代码(来自主题组件)?我想在分类器刚打开时以及分类下拉菜单被更改时获取所选的分类。

我曾想过这或许可以通过修改控制器或组件(例如分类器控制器)来实现,但未能找到分类信息。

你可以在 Composer 控制器中观察 model.categoryId,并在其发生变化时执行你的代码。

感谢 @fzngagan

还有一个后续问题,之前从未见过任何模型 :slight_smile: 。我写了以下代码,看起来可以正常工作。

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 对象包含的内容。它可能已经包含了类别名称。

使用“模型对象”时,你的意思是让我这样做,对吗?

this.get("model")

编辑:
不管怎样,代码运行得很好。再次感谢!