Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接上的图表生成器自定义属性_Javascript_Alloy Ui - Fatal编程技术网

Javascript 连接上的图表生成器自定义属性

Javascript 连接上的图表生成器自定义属性,javascript,alloy-ui,Javascript,Alloy Ui,这与相关,但它是关于向节点添加自定义节点类型和属性的,我已经成功地做到了这一点,我希望在连接本身上添加自定义属性 我尝试在builder.connector上重写方法getProperties和getPropertyModel,但没有成功。以下是我目前的情况,也是我认为最接近的尝试: // .. adding different node types and their attributes var builder = new Y.DiagramBuilder( { available

这与相关,但它是关于向节点添加自定义节点类型和属性的,我已经成功地做到了这一点,我希望在连接本身上添加自定义属性

我尝试在builder.connector上重写方法getProperties和getPropertyModel,但没有成功。以下是我目前的情况,也是我认为最接近的尝试:

// .. adding different node types and their attributes

var builder = new Y.DiagramBuilder( {
    availableFields: availableFields,
    boundingBox: '#diagramContainer',
    srcNode: '#diagramBuilder'
} );

builder.render();

var test = builder.connector.addAttr(
    'testAttr', 
    { 
        value:'test', 
        validator: Y.Lang.isString,
        readOnly: false,
        lazyAdd: false
    },
    false
);
builder.connector.SERIALIZABLE_ATTRS.push('testAttr');

// just calling addAttr doesn't seem to work, so I also tried this..
test.getProperties = function() {

    return [
        {
            attributeName: 'testAttr',
            editor: new Y.TextCellEditor(),
            name: 'Test Attr',
            value: 'default value??'
        }
    ]
};
在源代码中,似乎有一个STRINGS属性也需要修改,但我只能找到一个获取STRINGS的方法getStrings,而没有修改它们的方法。我可以尝试直接修改它,但我不能100%确定它上面的对象是否未在builder.connector上设置


提前谢谢。

很抱歉,这些事情没有那么简单:S

我已经更新了一个旧的例子,介绍了您正在寻找的内容。和以前一样,不是生产代码材料,只是足以让您启动和运行

如果您查看源代码,这里的一个问题是Y.DiagramBuilderImpl创建了自己的Y.Connector实例,因此方法是在其中混合一些扩展来修改行为

正如您在示例中看到的,我们使用

var CustomConnector = function() {
};

CustomConnector.ATTRS = {
    testAttr: {
        valueFn: function() {
            return 'test attr instance value';
        }
    }
};

CustomConnector.prototype.initializer = function() {
    var instance = this;

    instance.SERIALIZABLE_ATTRS.push('testAttr');
};

CustomConnector.prototype.getPropertyModel = function() {
    var instance = this;

    return [
        {
            attributeName: 'testAttr',
            editor: new Y.TextCellEditor(),
            name: 'Test Attr'
        }
    ];
};
然后,我们将扩展与现有Y.Connector混合,根据需要添加和覆盖功能,包括:

Y.Base.mix(Y.Connector, [CustomConnector]);
另外一个选项是创建自己的CustomConnector类,扩展Y连接器。请参阅,然后将其设置为DiagramBuilder的连接器类,例如:


抱歉,这些事情并没有那么简单:S

我已经更新了一个旧的例子,介绍了您正在寻找的内容。和以前一样,不是生产代码材料,只是足以让您启动和运行

如果您查看源代码,这里的一个问题是Y.DiagramBuilderImpl创建了自己的Y.Connector实例,因此方法是在其中混合一些扩展来修改行为

正如您在示例中看到的,我们使用

var CustomConnector = function() {
};

CustomConnector.ATTRS = {
    testAttr: {
        valueFn: function() {
            return 'test attr instance value';
        }
    }
};

CustomConnector.prototype.initializer = function() {
    var instance = this;

    instance.SERIALIZABLE_ATTRS.push('testAttr');
};

CustomConnector.prototype.getPropertyModel = function() {
    var instance = this;

    return [
        {
            attributeName: 'testAttr',
            editor: new Y.TextCellEditor(),
            name: 'Test Attr'
        }
    ];
};
然后,我们将扩展与现有Y.Connector混合,根据需要添加和覆盖功能,包括:

Y.Base.mix(Y.Connector, [CustomConnector]);
另外一个选项是创建自己的CustomConnector类,扩展Y连接器。请参阅,然后将其设置为DiagramBuilder的连接器类,例如:


再次感谢jbalsas,这正是我所需要的。我很高兴我现在问了这个问题,因为我从来没有试过这样做:再次感谢jbalsas,这正是我所需要的。我很高兴我现在问了这个问题,因为我永远不会尝试这个: