aboutsummaryrefslogtreecommitdiffstats
path: root/src/Injector.js
diff options
context:
space:
mode:
authorMisko Hevery2012-01-13 14:19:10 -0800
committerMisko Hevery2012-01-13 14:28:43 -0800
commit5cdfe45aa3e50fabad44009c1b8511253c6e4915 (patch)
treeeb921be6b173d5fd3a9cd1f0a95b5e1cace37fd8 /src/Injector.js
parent16a40c626fc3da688596928afa028a596204a683 (diff)
downloadangular.js-5cdfe45aa3e50fabad44009c1b8511253c6e4915.tar.bz2
feat(module): add runtime block
Diffstat (limited to 'src/Injector.js')
-rw-r--r--src/Injector.js12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/Injector.js b/src/Injector.js
index c9901513..cebc6eed 100644
--- a/src/Injector.js
+++ b/src/Injector.js
@@ -272,7 +272,7 @@ function createInjector(modulesToLoad) {
}));
- loadModules(modulesToLoad);
+ forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
return instanceInjector;
@@ -318,15 +318,16 @@ function createInjector(modulesToLoad) {
// Module Loading
////////////////////////////////////
function loadModules(modulesToLoad){
+ var runBlocks = [];
forEach(modulesToLoad, function(module) {
if (loadedModules.get(module)) return;
loadedModules.put(module, true);
if (isString(module)) {
var moduleFn = angularModule(module);
- loadModules(moduleFn.requires);
+ runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
try {
- for(var invokeQueue = moduleFn.invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {
+ for(var invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {
var invokeArgs = invokeQueue[i],
provider = invokeArgs[0] == '$injector'
? providerInjector
@@ -340,14 +341,14 @@ function createInjector(modulesToLoad) {
}
} else if (isFunction(module)) {
try {
- providerInjector.invoke(module);
+ runBlocks.push(providerInjector.invoke(module));
} catch (e) {
if (e.message) e.message += ' from ' + module;
throw e;
}
} else if (isArray(module)) {
try {
- providerInjector.invoke(module);
+ runBlocks.push(providerInjector.invoke(module));
} catch (e) {
if (e.message) e.message += ' from ' + String(module[module.length - 1]);
throw e;
@@ -356,6 +357,7 @@ function createInjector(modulesToLoad) {
assertArgFn(module, 'module');
}
});
+ return runBlocks;
}
////////////////////////////////////