2017-04-14 48 views
0

我有一個要求,我想在requires有條件地添加命名空間。Sencha - 有條件地添加namesapce需要

例如在下面的例子中,我想在特定條件下添加'views.popupgrid'名稱空間。目前它總是加載。

requires: ['Ext.window.MessageBox','views.popupgrid','user.MyUser' ] 

回答

1

Sencha工具鏈不支持條件依賴關係。當你將能夠在您選擇

requires:[ 
    (location.hash=='#test')?'testpopup':'normalpopup' 
] 

的文本編輯器編寫,這將在未編譯版本中運行,煎茶Cmd的將不能正確地編譯它,並會引發錯誤。

因此,Sencha Architect不支持這種語法。

您可以做什麼,同時保持符合標準:您可以使用Ext.Loader.loadScript像這樣:

Ext.define('MyForm',{ 
    extend: 'Ext.form.Panel' 
    initComponent:function() { 
     var me = this; 
     me.callParent(arguments); 
     if(x==3) Ext.Loader.loadScript({ 
      url:'MyCustomFormComponent.js', 
      onLoad:function(){ 
       me.add({ 
        xtype:'mycustomformcomponent' 
       }); 
      }) 
     }); 
    } 
}) 

請注意,在這種情況下,你將永遠有提供MyCustomFormComponent.js旁邊的精縮app.js,因爲依賴關係不能由工具鏈來解決。另外,根據連接情況,可能會在加載資源並將組件添加到表單之前出現可見的延遲。

總是加載依賴項的速度更快,更平滑,特別是如果您打算將應用程序作爲單個縮小的JavaScript文件(例如使用Sencha Cmd)傳遞時。

+0

最好的答案從來沒有想過這個解決方案的.. –