Angular Provider Factory Service

当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑。一定要早点意识到, controller 这一层应该很薄;也就是说, 应用里大部分的业务逻辑和持久化数据都应该放在 service 里。 很多人问道,关于如何在 controller 里保存持久化数据。这就不是 controller 该干的事。出于内存性能的考虑, controller 只在需要的时候才会初始化,一旦不需要就会被抛弃。因此,每次当你切换或刷新页面的时候,Angular 会清空当前的 controller。与此同时, service 可以用来永久保存应用的数据,并且这些数据可以在不同的 controller 之间使用。
Angular 提供了 3 种方法来创建并注册我们自己的服务。
1. Provider
2. Factory
3. Service

1. Angularjsprovider 方法 以及 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. Angularjsfactory 使用
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;

}

})


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值