Angular 提供了 3 种方法来创建并注册我们自己的服务。
1. Provider
2. Factory
3. Service
1. Angularjs中provider 方法 以及 provider 供应商的概念
Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service对象启用之前,先进行模块范围的配置,那就应该用 provider。
app.controller('myProviderCtrl',function($scope,myProvider){
$scope.artist = myProvider,getArtist();
$scope.data.thingFromConfig = myProvider.thingOnConfig;
});
app.provider('myProvider',function(){
this._artist = '';
this.thingFromConfig = '';
this.$get = function(){
var that =this;
return {
getArtist:function(){
return:that._artist;
},
thingOnConfig:that.thingFromConfig
}
}
});
app.config(function(myProviderProvider){
myProviderProvider.thingFromConfig = 'This was set in config()';
});
2. Angularjs中factory 使用
Factory 方法直接把一个函数当成一个对象的$get 方法可以直接返回字符串用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过factory 使用了。
app.controller('myFactoryCtrl',function($scope,myFactory){
$scope.artist=myFactory.getArtist();
})
app.factory('myFactory',function(){
var _artist='';
var service={};
service.getArtist=function(){
return _artist;
}
return service;
})
3. Angularjs 中 Service 使用
Service 是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service返回"this"。你把 service 传进 controller 之后,在 controller 里 "this" 上的属性就可以通过 service 来使用了
app.controller('myserviceCtrl',function($scope,myService){
$scope.artist=myService.getArtist();
})
app.service('myService',function(){
var _artist = 'Helly';
this.getArtist = function(){
return _artist;
}
})