provider提供者 - acelan86/angular GitHub Wiki
全局provider的初始化
//publishExternalAPI方法中有这么一段,前面接触过很多次
...
angularModule('ng', ['ngLocale'], ['$provide',
function ngModule($provide) {
....//注册一些全局指令
//注册全局provider,该page重点
$provide.provider({
$anchorScroll: $AnchorScrollProvider,
$browser: $BrowserProvider,
$cacheFactory: $CacheFactoryProvider,
$controller: $ControllerProvider,
$document: $DocumentProvider,
$exceptionHandler: $ExceptionHandlerProvider,
$filter: $FilterProvider,
$interpolate: $InterpolateProvider,
$http: $HttpProvider,
$httpBackend: $HttpBackendProvider,
$location: $LocationProvider,
$log: $LogProvider,
$parse: $ParseProvider,
$route: $RouteProvider,
$routeParams: $RouteParamsProvider,
$rootScope: $RootScopeProvider,
$q: $QProvider,
$sniffer: $SnifferProvider,
$templateCache: $TemplateCacheProvider,
$timeout: $TimeoutProvider,
$window: $WindowProvider
});
}
]);
...
$XxxProvider
每个$XxxProvider都必须有一个$get的方法,获取$XxxProvider提供的实际$Xxx
function $XxxProvider() {
this.$get = ['$dependences', function ($dependences) { ... }];
}
这个$get方法在injector.invoke的时候传递进去, 在invoke的getService(name)中被执行并返回$Xxxx