遵循Not Only an ECM Place这个很酷的教程,我的目标是编写一个自定义编辑器,其中包含几个元素和一个与属性关联的字段。此自定义编辑器将通过 ICN 插件安装。由于该属性是多值的,因此编辑器将嵌入到编辑器中。PropertyTable
这里的相关文件是:
- 将注册插件的插件 javascript 文件(在
ControlRegistry
ICN 的全局对象中) - 自定义编辑器 javascript 文件将扩展自定义小部件和将
_EditorMixin
小部件映射到属性的类 - 带有 dojo HTML 模板的自定义 Widget Javascript 文件
下面尝试使编辑器宽度可调整大小。在 Editor 注册代码中,我使用了 aDimensionSetting
并尝试覆盖 onSettingChanged() 以使 Editor Widget 可调整大小:
require([ /* [...] */],
function(lang, ) {
var editorId = "theWannaBeResizeableEditor";
ControlRegistry.editors.editorConfigs[editorId] = {
label: "A dummy label",
editorClass: AWannaBeResizeableEditor,
settings:
[
{
name: "width",
controlClass: DimensionSetting,
controlParams: {
label: resources.styleSettingsLabel.width,
help: resources.styleSettingsHelp.width
},
defaultValue: "100%",
// And here begins the problem...
onSettingChanged: function(helper, width) {
// Tried to resize the Widget : FAIL
}
} // [...]
]
}
});
除其他外,我尝试了此实现:
onSettingChanged: function(helper, width) {
helper.updateSetting("width", width);
helper.widget._adjustSizing && helper.widget._adjustSizing();
helper.widget.view.resize();
}
它没有用。红皮书对自定义 Widget 的讨论并不多,所以 - 除了我之前提到的教程之外,很难找到信息,除非通过“逆向工程”,这是 Javascript 对象探索的一个大词......