AngularJS笔记之创建服务方式比较 : factory vs service vs provider

那么问题来了,Angular 提供了三种方法来创建并注册我们的 service:factory, service 和 provider 。

Factory :

  • factory 就是创建一个对象,为他添加属性,然后把这个对象 return 出来。当你把 service 传进 controller 以后,在 controller 中这个对象的属性就可以通过 factory 使用了。
var app = angular.module('app',[]);
app.factory('myFactory',function(){
  var test = {};
  test.name = "Jason";
  test.sayHello = function(){console.log("hello world")};
  return test;
});
app.controller("myCtrl",function($scope,myFactory){
 $scope.greet =myFactory.test.sayHello;
   //use the attrs of the obj in the factory
})
  •  

Service:

  • service 是用 new 关键字实例化的。因此,你应该给 this 添加属性,然后 service 返回 this。你把 service 传进 controller 以后,在 controller 里 this 上的属性就可以用通过 service 来使用了
app.service('myService',function(){
    var _artist = "Nelly";

    this.getAritist = function(){
                         return _artist;
                       };

});

app.controller("myCtrl",function($scope,myService){

    $scope.getArtist = myService.getArtist;

});
  • Provider :

    Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,那就应该用 provider。

app.provider("myProvider",function(){
    this._artist = " " ;

    this.thingFromConfig = " " ;

    this.$get = function(){

        var that  =  this;

        return  {

           getArtist : function(){

               return that._artist;

            },

        thingOnConfig : that.thingFromConfig

        }

   },

   thingOnConfig 

});


app.controller("myController",function($scope,myProvider){

    $scope.artist = myProvider.getArtist();

    $scope.data.thingFromConfig = myProvider.thingOnConfig;

});



app.config(function(myProviderProvider){

    myProviderProvider.thingFromConfig = "This was set in config() " ;

})

 

转载于:https://my.oschina.net/u/1778998/blog/781253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值