diff options
Diffstat (limited to 'src/Injector.js')
| -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){  | 
