angular service provider

关于  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中的依赖注入   http://www.html-js.com/article/1980,这篇文章读了很多遍每次都有新的理解

 

你可能感兴趣的:(Provider)