[英]Diagram Builder Custom Attributes on Connections
这与此问题有关 ,但是它涉及向节点添加自定义节点类型和属性(我已经成功完成了此操作),并且我正在寻求在连接本身上添加自定义属性。
我尝试覆盖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上设置)
提前致谢。
抱歉,这些事情并没有像可能的那么简单:
我已经用您要查找的工作案例更新了旧示例。 和以前一样,不是生产代码材料,仅足以使您开始工作;)
如果查看源代码,这里的一个问题是Y.DiagramBuilderImpl
创建自己的Y.Connector
实例,因此方法是mix
一些扩展混入其中以修改行为。
如您在示例中所见,我们使用
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'
}
];
};
然后,根据需要,将扩展名mix
到现有的Y.Connector
添加和覆盖功能中:
Y.Base.mix(Y.Connector, [CustomConnector]);
另一个选择是让您创建扩展Y.Connector
自己的CustomConnector
类(请参见Base.create ),然后将其设置为DiagramBuilder
的连接器类,例如:
var builder = new Y.DiagramBuilder( {
availableFields: availableFields,
boundingBox: '#diagramContainer',
connector: CustomConnector,
srcNode: '#diagramBuilder'
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.