2015-03-19 85 views
0

AlloyUI newbie在这里,我想在YUI框架中非常基本的东西有问题。我使用的是AlloyUI 3.0.1,它仍然使用YUI和AngularJS。是否有可能在AlloyUI中有自定义连接器

问题是:有没有办法在AlloyUI的'每个定制节点'的基础上创建自定义连接器?

目标是能够为每个自定义节点设置不同的自定义连接器(具有一组单独的自定义属性)。例如,假设我有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工厂,返回类型的对象:“A.Connector”。

当我使用这个时,我可以在画布上拖放自定义节点,但只要我尝试使用它上的连接器连接到另一个节点,我在控制台中出现错误:

Uncaught TypeError: undefined is not a function at line 920: aui-diagram-node.js 

是:

return instance.get('connectors').has(transition.uid); 

..而这正是我迷路。

我可以扩展“A.connector”并在“每个定制节点”的基础上使用它吗?如果是这样,怎么样?

任何帮助表示赞赏!

谢谢。

回答

0

我想我有你应该调查至少方向(如果不是答案):

你可以(重新)编写自己的AUI-图建设者-connector.js和“替换/劫持旧”通过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

带我一整天找到它:(

+0

谢谢。我认为如果我一直参与这个项目的话就会有效果。我不再在那个项目中,但我会投票 - 可能会帮助别人! – trishulpani 2015-08-13 14:16:15

相关问题