對於我正在編寫的一個Titanium應用程序,我已經構建了一個模塊化方法,以便其他開發人員(當我從組織或其他人移動到另一個開發人員時被要求添加到應用程序)可以輕鬆地將新模塊添加到應用程序(不要與本機代碼模塊混淆)。從變量動態創建名稱空間對象
我很難搞清楚如何從數組中加載模塊並調用一個通用的中央引導類型方法來初始化模塊。該應用程序按照Tweetanium作者的建議使用名稱空間方法。
該應用程序使用的命名空間:org.app
我定義包含配置模塊,其在該應用被加載的陣列:
org.modules = [
{
name: 'messages',
enabled: true,
title: 'Messages'
},
{
name: 'calendar',
enabled: true,
title: 'Calendar'
}
];
每個模塊具有名稱空間:org.module.moduleName
其中moduleName
是數組中模塊的名稱(例如消息或日曆)。
我已經創建了一個模塊目錄,並且我已經成功地爲每個啓用的模塊動態包含js文件(通過專門靜態調用該方法進行測試)。我需要從模塊代碼調用createModuleWindow()
方法來獲取該模塊的主視圖。
org.module = {};
org.module.moduleManager = [];
// Loop through the list of modules and include the
// main modulename.js file if enabled.
// Create the module and add it to the module manager array
var modules = org.modules;
var config = org.config;
for (var i = 0; i < modules.length; i++) {
var _module = modules[i];
if (_module.enabled) {
Ti.include(config.moduleBasePath + _module.name + "/" + _module.name + '.js');
org.module.moduleManager.push(createModuleWindow(_module.name));
}
}
function createModuleWindow(moduleName) {
// Not sure what to do here.
return org.module.[moduleName].createMainWindow();
};
爲createModuleWindow()
,我已經試過動態類和方括號,但我只是得到這樣的錯誤「MODULENAME」不是一個構造函數(在使用類方法的情況下),或在解析錯誤上述代碼的情況。
如何動態調用名稱空間模塊方法?