关于 angular service factory provider 方面有很多,我也来写一篇加深下印象
provider 是一切方法的基础,所以功能也最强,provider 用来定义一个可以被注入的服务,其实就是一个依赖注入的模块。
已ng-route 为例
var ngRouteModule = angular.module('ngRoute', ['ng']). provider('$route', $RouteProvider);
等价 AngularJS在模块对象上直接暴露了provider方法
ngRouteModule.config(["$provide",function($provide) { $provide.provider('$route', $RouteProvider); }])
通过provider ,定义了$route服务。
通过provider 定义的服务会生成一个serviceProvider 例
$route服务$routeProvider, $location服务$locationProvider, $http服务$httpProvider ,$controller服务$controllerProvider
config阶段,只有provider能被注入(除了两个例外$provide和$injector)。此时可以通过serviceProvider 来设置服务中的一些私有属性 ,传一些参数,在服务模块调用之前。
例如:
路由配置
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中的依赖注入