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

Function createInjector

lib/test/angular/1.4.3/angular.js:4241–4473  ·  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 behaviour of the * service. The object returned by the dec

(modulesToLoad, strictDi)

Source from the content-addressed store, hash-verified

4239
4240
4241function createInjector(modulesToLoad, strictDi) {
4242 strictDi = (strictDi === true);
4243 var INSTANTIATING = {},
4244 providerSuffix = 'Provider',
4245 path = [],
4246 loadedModules = new HashMap([], true),
4247 providerCache = {
4248 $provide: {
4249 provider: supportObject(provider),
4250 factory: supportObject(factory),
4251 service: supportObject(service),
4252 value: supportObject(value),
4253 constant: supportObject(constant),
4254 decorator: decorator
4255 }
4256 },
4257 providerInjector = (providerCache.$injector =
4258 createInternalInjector(providerCache, function(serviceName, caller) {
4259 if (angular.isString(caller)) {
4260 path.push(caller);
4261 }
4262 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4263 })),
4264 instanceCache = {},
4265 instanceInjector = (instanceCache.$injector =
4266 createInternalInjector(instanceCache, function(serviceName, caller) {
4267 var provider = providerInjector.get(serviceName + providerSuffix, caller);
4268 return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
4269 }));
4270
4271
4272 forEach(loadModules(modulesToLoad), function(fn) { if (fn) instanceInjector.invoke(fn); });
4273
4274 return instanceInjector;
4275
4276 ////////////////////////////////////
4277 // $provider
4278 ////////////////////////////////////
4279
4280 function supportObject(delegate) {
4281 return function(key, value) {
4282 if (isObject(key)) {
4283 forEach(key, reverseParams(delegate));
4284 } else {
4285 return delegate(key, value);
4286 }
4287 };
4288 }
4289
4290 function provider(name, provider_) {
4291 assertNotHasOwnProperty(name, 'service');
4292 if (isFunction(provider_) || isArray(provider_)) {
4293 provider_ = providerInjector.instantiate(provider_);
4294 }
4295 if (!provider_.$get) {
4296 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4297 }
4298 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