我可能遗漏了一些显而易见的东西,如果是这样,我提前道歉。
我的插件为每个类别都有一个自定义设置,用于在编辑器中显示/隐藏一个切换开关。切换开关是在一个 Glimmer 组件中设置的,该组件由一个初始化程序调用,以渲染在 composer-fields 插件出口中。
我的目标是让编辑器根据与该类别关联的自定义设置的值,在编辑器中更改类别时显示/隐藏切换开关。
是否可以在插件出口的 outletArgs 上添加一个观察者?编辑器模型设置在 outletArgs 中,所以我的想法是通过它在 categoryId 上设置观察者。然后,我将运行一个函数来检查类别中自定义设置的值。但是我无法正确设置观察者。这可能是因为我设置不正确,我对 EmberJS 还不熟悉。
或者有其他方法可以实现这一点吗?
作为参考,我目前运行的是 Discourse v3.4.7。
Moin
2
我尝试了此解决方案,但不幸的是,我正在构建的版本中的已初始化转换器列表较旧,缺少 composer-editor-reply-placeholder。
为了提供更多背景信息,我正在将插件功能重构为使用 Glimmer 组件,因为 registerConnectorClass API 已被弃用。下面的代码是最初设置的内容。
export default {
initialize(container) {
withPluginApi("1.6.0", api => {
api.registerConnectorClass("composer-fields", "handlebars-template-name", {
setupComponent(attrs, component) {
const model = attrs.model;
const controller = api.container.lookup("controller:composer");
if (controller) {
controller.addObserver("model.categoryId", this, function() {
// 设置 showToggle 和 isRestricted 值的逻辑
let props = {
showField: showToggle && isRestricted,
}
component.setProperties(Object.assign(props));
})
}
}
}
是否有其他方法可以从 Glimmer 组件获得相同的功能?特别是观察 model 和/或 categoryId 的变化。