$provide对象的provider、factory、service方法

定义服务 $provider

  • 服务本身是一个任意的对象。

  • ng 提供服务的过程涉及它的依赖注入机制。

  • angular 是用$provider对象来实现自动依赖注入机制,注入机制通过调用一个 provider 的 $get() 方法,把得到的对象作为参数进行相关调用

  • $provider提供很多很定义服务的方法,这些简便的方法还直接被module所引用

三种定义服务方式

  • $provider.provider

  • $provider.factory

    • factory 方法直接把一个函数当成是一个对象的 $get() 方法

    • @see module.factory

    • 返回的内容可以是任何类型

  • $provider.service

    • 和factory类似,但返回的东⻄西必须是对象

    • @see module.service

例子:

index.html

 <div ng-app="myApp">

        <div ng-controller="firstController">
            {{name}}
        </div>

    </div>

<script src="//cdn.bootcss.com/angular.js/1.4.8/angular.js"></script>
<script type="text/javascript" src="app/index.js"></script>

app/index.js

var myApp = angular.module('myApp',[],function($provide){

    // 自定义服务
    $provide.provider('CustomService',function(){

        this.$get = function(){
            return {
                message : 'CustomService Message'
            }
        }
    });

    // 自定义工厂
    $provide.factory('CustomFactory',function(){
        return [1,2,3,4,5,6,7];
    });

    // 自定义服务
    $provide.service('CustomService2',function(){
        return {
                message : 'CustomService Message2'
            }
    })

});

myApp.controller('firstController',function($scope, CustomFactory, CustomService, CustomService2){
    $scope.name = '张三';

    console.log(CustomFactory);

    console.log(CustomService);

    console.log(CustomService2);

});

注意:也可以通过以下方式定义服务

var app = angular.module('myApp', []);
app.service();
app.factory();

效果

Last updated