關於 angular service factory provider 方面有不少,我也來寫一篇加深下印象javascript
provider 是一切方法的基礎,因此功能也最強,provider 用來定義一個能夠被注入的服務,其實就是一個依賴注入的模塊。html
已ng-route 爲例java
var ngRouteModule = angular.module('ngRoute', ['ng']). provider('$route', $RouteProvider);
等價 AngularJS在模塊對象上直接暴露了provider方法app
ngRouteModule.config(["$provide",function($provide) { $provide.provider('$route', $RouteProvider); }])
經過provider ,定義了$route服務。ide
經過provider 定義的服務會生成一個serviceProvider 例this
$route服務$routeProvider, $location服務$locationProvider, $http服務$httpProvider ,$controller服務$controllerProviderurl
config階段,只有provider能被注入(除了兩個例外$provide和$injector)。此時能夠經過serviceProvider 來設置服務中的一些私有屬性 ,傳一些參數,在服務模塊調用以前。spa
例如:htm
路由配置對象
app.config(['$routeProvider', function ($routeProvider) { $routeProvider.when('/view1', { template:"this is v1 " }); $routeProvider.when('/view2', { //詳情頁面 template:"<div class='view2'>this is view 2</div> " }); $routeProvider.when('/view3', { //詳情頁面 templateUrl: 'all2.html' }); }])
設置 $route 服務中的routes 路由列表。
最後 感謝主要參考文檔 理解AngularJS中的依賴注入