AngularJS(十二)Service、Factory、Provider

Service是AngularJS的可注入类型,是封装了一些特定业务逻辑的单例对象,单例对象意味着在每个应用中只会被实例化一次(由$injector实例化),并且是延迟加载的(需要时才会被创建),它对外提供一些方法供其他组件调用。

var app = angular.module("myApp", []);
app.controller("MainController", function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});

1 注册一个自定义的Service

var app = angular.module("myApp", []);
app.service("myService", function(){
    this.sayHello = function(){
        alert("this is my service!");
    }
});
app.controller("MainController", function($scope, myService){
    myService.sayHello();
});

如上代码,在MainController定义时,我们声明它依赖于myService,当AngularJS解析依赖时,会使用myService对应的构造方法实例化该Service对象。需要注意的是,Service对象只会被实例化一次,后面注入的Service对象是第一次调用Service构造方法后的缓存版本。

2 Factory

var app = angular.module("myApp", []);
app.factory("myFactory", function(){
    return {
        sayHello: function(){
            alert("welcome to you !");
        }
    }
});
app.controller("MainController", function(myFactory){   
    myFactory.sayHello();
});

上面代码中,使用模块实例的factory()方法创建自定义的Factory对象,该方法的第一个参数为Factory对象名称,和service方法不同的是,它的第二个参数并不是Factory对象的构造方法,而是一个普通方法,该方法必须返回一个对象实例。

3 Provider

你可能感兴趣的:(AngularJS(十二)Service、Factory、Provider)