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

Function createInjector

lib/test/angular/1.5.0/angular.js:4376–4633  ·  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

4374
4375
4376function createInjector(modulesToLoad, strictDi) {
4377 strictDi = (strictDi === true);
4378 var INSTANTIATING = {},
4379 providerSuffix = 'Provider',
4380 path = [],
4381 loadedModules = new HashMap([], true),
4382 providerCache = {
4383 $provide: {
4384 provider: supportObject(provider),
4385 factory: supportObject(factory),
4386 service: supportObject(service),
4387 value: supportObject(value),
4388 constant: supportObject(constant),
4389 decorator: decorator
4390 }
4391 },
4392 providerInjector = (providerCache.$injector =
4393 createInternalInjector(providerCache, function(serviceName, caller) {
4394 if (angular.isString(caller)) {
4395 path.push(caller);
4396 }
4397 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4398 })),
4399 instanceCache = {},
4400 protoInstanceInjector =
4401 createInternalInjector(instanceCache, function(serviceName, caller) {
4402 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4403 return instanceInjector.invoke(
4404 provider.$get, provider, undefined, serviceName);
4405 }),
4406 instanceInjector = protoInstanceInjector;
4407
4408 providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) };
4409 var runBlocks = loadModules(modulesToLoad);
4410 instanceInjector = protoInstanceInjector.get('$injector');
4411 instanceInjector.strictDi = strictDi;
4412 forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); });
4413
4414 return instanceInjector;
4415
4416 ////////////////////////////////////
4417 // $provider
4418 ////////////////////////////////////
4419
4420 function supportObject(delegate) {
4421 return function(key, value) {
4422 if (isObject(key)) {
4423 forEach(key, reverseParams(delegate));
4424 } else {
4425 return delegate(key, value);
4426 }
4427 };
4428 }
4429
4430 function provider(name, provider_) {
4431 assertNotHasOwnProperty(name, 'service');
4432 if (isFunction(provider_) || isArray(provider_)) {
4433 provider_ = providerInjector.instantiate(provider_);

Callers 1

doBootstrapFunction · 0.70

Calls 5

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

Tested by

no test coverage detected