是否可以在 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。

此致