我必须制作一个图编辑器,所以我使用AlloYUI,我已经按照this question的答案添加了一个自定义节点。
我已成功设置新节点,并通过diagramBuilder.toJSON()
检索其值我尝试做的是更改自定义节点的自定义属性的默认编辑器小部件,我想更改日期选择器小部件的文本框,但我的目标是能够使用任何其他表单元素,如选择或一组单选按钮。
使用WebStorm中包含的javascript调试器进行操作,我发现默认字段中有一个'编辑器'属性where定义为" textAreaCellEditor"。
但是我的自定义属性没有这个属性,所以我试图附加一个编辑器,但我无法让它工作,我已尝试过这个:
Y.DiagramNodeCustom = Y.Component.create({
NAME: 'diagram-node',
ATTRS: {
type: {
value: 'custom'
},
custom_attr: {
value: 'customAttr'
}
},
EXTENDS: Y.DiagramNodeTask,
prototype: {
getPropertyModel: function () {
var instance = this;
var model = Y.DiagramNodeTask.superclass.getPropertyModel.apply(
instance, arguments);
model.push({
attributeName: 'customAttr',
name: 'Custom Attribute',
editor: Y.Component.create({
NAME: "DateField",
EXTENDS: Y.DateCellEditor
})
});
return model;
},
SERIALIZABLE_ATTRS: ['description', 'name', 'required', 'type',
'width', 'height', 'zIndex', 'xy', 'customAttr']
}
});
Y.DiagramBuilder.types['custom'] = Y.DiagramNodeCustom;
我也试图改变" model.push"部分:
model.push({
attributeName: 'customAttr',
name: 'Custom Attribute',
editor: {name: "textCellEditor"}
});
和:
model.push({
attributeName: 'customAttr',
name: 'Custom Attribute',
editor: Y.DateCellEditor({
name: 'DateCellEditor'
})
});
但没有任何作用。您是否知道如何更改默认编辑器?
答案 0 :(得分:0)
感谢罗伯特·弗兰普顿,他在google groups中回答了我的问题,其实现方式是:
model.push({
attributeName: 'customAttr',
name: 'Custom Attribute',
editor: new Y.DateCellEditor()
});
你必须在构造函数之前添加'new'来创建Y.DateCellEditor对象的新实例。