是否可以在 AlloyUI 中使用自定义连接器
Is it possible to have custom connectors in AlloyUI
这里是 AlloyUI 新手,我想我在使用 YUI 框架的一些非常基本的东西时遇到了麻烦。我正在使用 AlloyUI 3.0.1,它仍然使用 YUI 和 AngularJS.
问题是:有没有办法在 AlloyUI 中创建基于 'per-custom-node' 的自定义连接器?
目标是能够为每个自定义节点提供不同的自定义连接器(具有一组单独的自定义属性)。例如,假设我有 2 个自定义节点 A 和 B,我希望节点 A - A 使用一种类型的自定义连接器连接,而 B - B 使用另一种。这可能吗?
我可以像这样创建具有自定义属性等的自定义节点:
service.getScriptContainer = function(Y) {
var scriptContainer = Y.Component.create({
NAME: 'diagram-node',
ATTRS: {
//..custom properies,
connectors : {
valueFn : function(){
return ConnectorFactory.getScriptConnector(Y);
}
}
},
EXTENDS: Y.DiagramNodeTask,
prototype: {
.....
}
其中 ConnectorFactory 是一个 AngularJS 工厂,returns 一个类型的对象:'A.Connector'.
当我使用它时,我可以将自定义节点拖放到 canvas 上,但是当我尝试使用它上面的连接器连接到另一个节点时,我得到一个错误在控制台中说:
Uncaught TypeError: undefined is not a function at line 920: aui-diagram-node.js
即:
return instance.get('connectors').has(transition.uid);
.. 这就是我迷路的地方。
我可以扩展 'A.connector' 并在 'per-custom-node' 的基础上使用它吗?如果是,怎么做?
感谢任何帮助!
谢谢。
我想我至少有方向你应该调查(如果不是答案):
您可以(重新)编写自己的 aui-diagram-builder-connector.js 和 "replace/hijack old one" 通过 applyConfig - 像这样:
YUI().use('aui-diagram-builder', function(Y) {
/* your code */
}).applyConfig({ /* her we "hijack" default aui-diagram-builder-connector file */
modules: {
"aui-diagram-builder-connector": {
fullpath: '/js/aui-diagram-builder-connector-mine.js' /* use relative path and minified version if possible */
}
}
});
这将为内置所需模块加载新文件,因此您在保持旧文件不变的同时拥有最大的自由度:)
这个救了我一次,我希望它也能救别人:D
我花了一整天才找到它:(
我对此进行了测试,但从未在 DiagramBuilder 中加载或使用 cpied /js/aui-diagram-builder-connector-mine.js。
此致
这里是 AlloyUI 新手,我想我在使用 YUI 框架的一些非常基本的东西时遇到了麻烦。我正在使用 AlloyUI 3.0.1,它仍然使用 YUI 和 AngularJS.
问题是:有没有办法在 AlloyUI 中创建基于 'per-custom-node' 的自定义连接器?
目标是能够为每个自定义节点提供不同的自定义连接器(具有一组单独的自定义属性)。例如,假设我有 2 个自定义节点 A 和 B,我希望节点 A - A 使用一种类型的自定义连接器连接,而 B - B 使用另一种。这可能吗?
我可以像这样创建具有自定义属性等的自定义节点:
service.getScriptContainer = function(Y) {
var scriptContainer = Y.Component.create({
NAME: 'diagram-node',
ATTRS: {
//..custom properies,
connectors : {
valueFn : function(){
return ConnectorFactory.getScriptConnector(Y);
}
}
},
EXTENDS: Y.DiagramNodeTask,
prototype: {
.....
}
其中 ConnectorFactory 是一个 AngularJS 工厂,returns 一个类型的对象:'A.Connector'.
当我使用它时,我可以将自定义节点拖放到 canvas 上,但是当我尝试使用它上面的连接器连接到另一个节点时,我得到一个错误在控制台中说:
Uncaught TypeError: undefined is not a function at line 920: aui-diagram-node.js
即:
return instance.get('connectors').has(transition.uid);
.. 这就是我迷路的地方。
我可以扩展 'A.connector' 并在 'per-custom-node' 的基础上使用它吗?如果是,怎么做?
感谢任何帮助!
谢谢。
我想我至少有方向你应该调查(如果不是答案):
您可以(重新)编写自己的 aui-diagram-builder-connector.js 和 "replace/hijack old one" 通过 applyConfig - 像这样:
YUI().use('aui-diagram-builder', function(Y) {
/* your code */
}).applyConfig({ /* her we "hijack" default aui-diagram-builder-connector file */
modules: {
"aui-diagram-builder-connector": {
fullpath: '/js/aui-diagram-builder-connector-mine.js' /* use relative path and minified version if possible */
}
}
});
这将为内置所需模块加载新文件,因此您在保持旧文件不变的同时拥有最大的自由度:)
这个救了我一次,我希望它也能救别人:D
我花了一整天才找到它:(
我对此进行了测试,但从未在 DiagramBuilder 中加载或使用 cpied /js/aui-diagram-builder-connector-mine.js。
此致