关于 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中的依赖注入