2015-03-19 83 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

相關問題