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