我有一个模块ModuleABC,它根据标志加载modulea或moduleb,加载这些模块后,在模块方法上调用init。
ModuleABC.js
define(['aa'],function(aa){
var data;
load = function(){
if(data.IsAdmin){
require(['moduleA'],function(modulea){
modulea.init(data);
});
}
else if
{
require(['moduleB'],function(moduleb){
moduleb.init(data);
});
}
}
return initialize{
load();
}
})
另一个模块需要ModuleABC,但是当我到达moduleabc.load()时,我将不会调用我的modulea或moduleb init方法。
Another Module dependent on ModuleABC
require(['ModuleABC'],function(moduleabc){
moduleabc.load();
By the time i reach here, i will not have my modulea or moduleb init method called.
How do I achieve this?
});
答案 0 :(得分:0)
听起来load
函数需要异步。此外,您的某些JavaScript无效,因此我已对其进行了更正:
<强> ModuleABC.js 强>
define(['aa'], function (aa) {
var data;
function load(cb) {
var module = data.IsAdmin ? 'moduleA' : 'moduleB';
require([module], function (module) {
module.init(data);
cb();
});
}
return {
initialise: load
};
});
<强> AnotherModule.js 强>
require(['ModuleABC'], function (moduleabc) {
moduleabc.load(function () {
// By this point, either `moduleA` or `moduleB` will have been loaded and initialised
});
});