diff options
| author | Misko Hevery | 2012-01-13 14:19:10 -0800 |
|---|---|---|
| committer | Misko Hevery | 2012-01-13 14:28:43 -0800 |
| commit | 5cdfe45aa3e50fabad44009c1b8511253c6e4915 (patch) | |
| tree | eb921be6b173d5fd3a9cd1f0a95b5e1cace37fd8 /src/Injector.js | |
| parent | 16a40c626fc3da688596928afa028a596204a683 (diff) | |
| download | angular.js-5cdfe45aa3e50fabad44009c1b8511253c6e4915.tar.bz2 | |
feat(module): add runtime block
Diffstat (limited to 'src/Injector.js')
| -rw-r--r-- | src/Injector.js | 12 |
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; } //////////////////////////////////// |
