在AlloYUI Diagram Builder中更改节点的默认编辑器

时间:2013-10-03 22:27:57

标签: javascript alloy-ui

我必须制作一个图编辑器,所以我使用AlloYUI,我已经按照this question的答案添加了一个自定义节点。

我已成功设置新节点,并通过diagramBuilder.toJSON()

检索其值

我尝试做的是更改自定义节点的自定义属性的默认编辑器小部件,我想更改日期选择器小部件的文本框,但我的目标是能够使用任何其他表单元素,如选择或一组单选按钮。

使用WebStorm中包含的javascript调试器进行操作,我发现默认字段中有一个'编辑器'属性where定义为" textAreaCellEditor"。

Default node attributes, as shown in the WebStorm debugger

但是我的自定义属性没有这个属性,所以我试图附加一个编辑器,但我无法让它工作,我已尝试过这个:

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'
          })
        });

但没有任何作用。您是否知道如何更改默认编辑器?

1 个答案:

答案 0 :(得分:0)

感谢罗伯特·弗兰普顿,他在google groups中回答了我的问题,其实现方式是:

model.push({
   attributeName: 'customAttr',
   name: 'Custom Attribute',

   editor: new Y.DateCellEditor()
});

你必须在构造函数之前添加'new'来创建Y.DateCellEditor对象的新实例。