diff options
| author | Misko Hevery | 2011-10-26 21:36:19 -0700 |
|---|---|---|
| committer | Misko Hevery | 2011-11-14 16:39:32 -0800 |
| commit | 9062996a0e6b449467f5b8ec06824086ca87f9cf (patch) | |
| tree | f2ba7dfea1e0a06c9f25e5bb2e498758e63191b3 /src | |
| parent | 411c1ae77eaeef1686274e9e4995641a8f83e765 (diff) | |
| download | angular.js-9062996a0e6b449467f5b8ec06824086ca87f9cf.tar.bz2 | |
feat(injector): support $inject(fn($service){}) function invocation
Diffstat (limited to 'src')
| -rw-r--r-- | src/Injector.js | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/Injector.js b/src/Injector.js index 3a7fdeda..624246af 100644 --- a/src/Injector.js +++ b/src/Injector.js @@ -33,7 +33,9 @@ * `injector.eager()` */ function createInjector(factories) { - var instanceCache = {$injector: injector}; + var instanceCache = { + $injector: injector + }; factories = factories || angularService; injector.invoke = invoke; @@ -42,19 +44,23 @@ function createInjector(factories) { if (factory.$eager) injector(name); }); - return injector; + return instanceCache.$injector; function injector(serviceId, path){ - if (!(serviceId in instanceCache)) { - var factory = factories[serviceId]; - path = path || []; - path.unshift(serviceId); - if (!factory) throw Error("Unknown provider for '" + path.join("' <- '") + "'."); - inferInjectionArgs(factory); - instanceCache[serviceId] = invoke(null, factory, [], path); - path.shift(); + if (typeof serviceId == 'string') { + if (!(serviceId in instanceCache)) { + var factory = factories[serviceId]; + path = path || []; + path.unshift(serviceId); + if (!factory) throw Error("Unknown provider for '" + path.join("' <- '") + "'."); + inferInjectionArgs(factory); + instanceCache[serviceId] = invoke(null, factory, [], path); + path.shift(); + } + return instanceCache[serviceId]; + } else { + return invoke(null, serviceId, path); } - return instanceCache[serviceId]; } function invoke(self, fn, args, path){ |
