From 9062996a0e6b449467f5b8ec06824086ca87f9cf Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 26 Oct 2011 21:36:19 -0700 Subject: feat(injector): support $inject(fn($service){}) function invocation --- src/Injector.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src') 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){ -- cgit v1.2.3