MCPcopy Index your code
hub / github.com/binux/qiandao / createInjector

Function createInjector

web/static/components/angularjs/angular.js:3759–3966  ·  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)

Source from the content-addressed store, hash-verified

3757
3758
3759function createInjector(modulesToLoad) {
3760 var INSTANTIATING = {},
3761 providerSuffix = 'Provider',
3762 path = [],
3763 loadedModules = new HashMap([], true),
3764 providerCache = {
3765 $provide: {
3766 provider: supportObject(provider),
3767 factory: supportObject(factory),
3768 service: supportObject(service),
3769 value: supportObject(value),
3770 constant: supportObject(constant),
3771 decorator: decorator
3772 }
3773 },
3774 providerInjector = (providerCache.$injector =
3775 createInternalInjector(providerCache, function() {
3776 throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
3777 })),
3778 instanceCache = {},
3779 instanceInjector = (instanceCache.$injector =
3780 createInternalInjector(instanceCache, function(servicename) {
3781 var provider = providerInjector.get(servicename + providerSuffix);
3782 return instanceInjector.invoke(provider.$get, provider);
3783 }));
3784
3785
3786 forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
3787
3788 return instanceInjector;
3789
3790 ////////////////////////////////////
3791 // $provider
3792 ////////////////////////////////////
3793
3794 function supportObject(delegate) {
3795 return function(key, value) {
3796 if (isObject(key)) {
3797 forEach(key, reverseParams(delegate));
3798 } else {
3799 return delegate(key, value);
3800 }
3801 };
3802 }
3803
3804 function provider(name, provider_) {
3805 assertNotHasOwnProperty(name, 'service');
3806 if (isFunction(provider_) || isArray(provider_)) {
3807 provider_ = providerInjector.instantiate(provider_);
3808 }
3809 if (!provider_.$get) {
3810 throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
3811 }
3812 return providerCache[name + providerSuffix] = provider_;
3813 }
3814
3815 function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }
3816

Callers 1

doBootstrapFunction · 0.85

Calls 6

supportObjectFunction · 0.85
createInternalInjectorFunction · 0.85
forEachFunction · 0.85
loadModulesFunction · 0.85
joinMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected