MCPcopy
hub / github.com/angular-ui/ui-router / createInjector

Function createInjector

test/angular/1.4/angular.js:4360–4593  ·  view source on GitHub ↗

* @ngdoc method * @name $provide#decorator * @description * * Register a **service decorator** with the auto.$injector $injector. A service decorator * intercepts the creation of a service, allowing it to override or modify the behavior of the * service. The object returned by the deco

(modulesToLoad, strictDi)

Source from the content-addressed store, hash-verified

4358
4359
4360function createInjector(modulesToLoad, strictDi) {
4361 strictDi = (strictDi === true);
4362 var INSTANTIATING = {},
4363 providerSuffix = 'Provider',
4364 path = [],
4365 loadedModules = new HashMap([], true),
4366 providerCache = {
4367 $provide: {
4368 provider: supportObject(provider),
4369 factory: supportObject(factory),
4370 service: supportObject(service),
4371 value: supportObject(value),
4372 constant: supportObject(constant),
4373 decorator: decorator
4374 }
4375 },
4376 providerInjector = (providerCache.$injector =
4377 createInternalInjector(providerCache, function(serviceName, caller) {
4378 if (angular.isString(caller)) {
4379 path.push(caller);
4380 }
4381 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4382 })),
4383 instanceCache = {},
4384 instanceInjector = (instanceCache.$injector =
4385 createInternalInjector(instanceCache, function(serviceName, caller) {
4386 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4387 return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
4388 }));
4389
4390
4391 forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); });
4392
4393 return instanceInjector;
4394
4395 ////////////////////////////////////
4396 // $provider
4397 ////////////////////////////////////
4398
4399 function supportObject(delegate) {
4400 return function(key, value) {
4401 if (isObject(key)) {
4402 forEach(key, reverseParams(delegate));
4403 } else {
4404 return delegate(key, value);
4405 }
4406 };
4407 }
4408
4409 function provider(name, provider_) {
4410 assertNotHasOwnProperty(name, 'service');
4411 if (isFunction(provider_) || isArray(provider_)) {
4412 provider_ = providerInjector.instantiate(provider_);
4413 }
4414 if (!provider_.$get) {
4415 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4416 }
4417 return providerCache[name + providerSuffix] = provider_;

Callers 1

doBootstrapFunction · 0.70

Calls 4

supportObjectFunction · 0.70
createInternalInjectorFunction · 0.70
forEachFunction · 0.70
loadModulesFunction · 0.70

Tested by

no test coverage detected