2016-07-14 35 views
1

是否有可能要求在Ext JS中使用相對路徑的類?假設我有一個目錄結構是這樣的:需要一個相對名稱的Ext JS類

appRoot 
`- some 
    `- really 
     `- long 
     `- path 
      |- MyClass.js 
      `- MyClassDependency.js 

而且MyClass.js看起來是這樣的:

Ext.define('RootName.some.really.long.path.MyClass', { 
    requires: ['RootName.some.really.long.path.MyClassDependency'], 
    // Snipped. 
}); 

而且MyClassDependency.js是這樣的:

Ext.define('RootName.some.really.long.path.MyClassDependency', { 
    // Snipped. 
}); 

有沒有表達這種依賴的方式沒有引用整個類名?我想,例如,移動MyClass.jsMyClassDependency.js所在的文件夾,而不必更新每個具有MyClass.js的依賴關係。

回答

0

直到現在還沒有標準的方法來做到這一點。
從理論上講,可能會覆蓋方法Ext.ClassManager.define以將當前的「名稱空間」添加到requires陣列中的類中。

Ext.override(Ext.ClassManager, { 
    define : function(className, data) { 
    //prepend data.requires with className 
    this.callSuper(arguments); 
    } 
}); 

這樣做,煎茶Cmd的將不再能夠建立你的應用程序的縮小版本,因爲它再也不能化解的要求,只要你不包括在生成的所有文件反正。
我不會做這個嘗試,因爲你用ExtJs更新破壞某些東西的風險是巨大的。


另一種方法是使用通配符。

Ext.define('TestApp.view.Main', { 
    requires: [ 
    'TestApp.view.*' 
    ] 
}); 

的最後一件事在我腦海中是使用別名。

Ext.define('TestApp.view.MainDep', { 
    alias: ['module1.mainDep'] 
}); 

Ext.define('TestApp.view.Main', { 
    requires: [ 
    'module1.mainDep', 
    'module2.*', 
    ] 
}); 
相關問題