参考自:http://hellobug.github.io/blog/angularjs-providers/
一:各种服务
provider、factory、service、value和constant 都是provider。decorator 可以用来修饰provider.
用个例子来区分它们:
$provide.provider('myDate', {
$get: function() {
return new Date();
}
});
//可以写成
$provide.factory('myDate', function(){
return new Date();
});
//可以写成
$provide.service('myDate', Date);
调用:
app.controller('MainCtrl', function($scope, myDate) {
$scope.myDate = myDate; //current date
});
二:value 和 constant 的区别
需求:只想定义一个$get, 而且就返回一个常量。
这时候,value 和 constant 都可以做到。
$provide.value('pageCount', 7);
$provide.constant('pageCount', 7);
区别一:value 可以被修改,constant 一旦声明无法被修改。
$provide.decorator('pageCount', function($delegate) {
return $delegate + 1;
});
decorator 可以用来修改(修饰)已定义的provider们,除了constant.
区别二:value 不可以在config 里注入,constant 可以。
myApp.config(function(pageCount){
//可以得到constant定义的'pageCount'
});