[英]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.