angularJS Provider、factory、service详解及实例代码  更新时间:2016年09月21日 09:52:36   作者:在路上_W   这篇文章主要介绍了angularJS Provider详解及实例代码的相关资料,需要的朋友可以参考下 factory 用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了。 app.controller(‘myFactoryCtrl’, function($scope, myFactory){ $scope.artist = myFactory.getArtis(); }); app.factory(‘myFactory’, function(){ var _artist = ”; var service = {}; service.getArtist = function(){ return _artist; } return service; }); service Service 是用”new”关键字实例化的。因此,你应该给”this”添加属性,然后 service 返回”this”。你把 service 传进 controller 之后,在controller里 “this” 上的属性就可以通过 service 来使用了。 app.controller(‘myFactoryCtrl’, function($scope, myService){ $scope.artist = myService.getArtis(); }); app.service(‘myService’, function(){ var _artist =”; this.getArtist = function(){ return _artist; } }); 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()’; }); value和constant $provide.value(‘myValue’, 10); $provide.constant(‘myConstant’, 10); /* 二者的区别: 1. value可以被修改,constant一旦声明就无法修改 2. value不可以在config中注入,constant可以。 */ provider、factory、service三者的关系 app.provider(‘myDate’, { $get: function() { return new Date(); } }); //可以写成 app.factory(‘myDate’, function(){ return new Date(); }); //可以写成 app.service(‘myDate’, Date); 总结 所有的供应商都只被实例化一次,也就说他们都是单例的 除了constant,所有的供应商都可以被装饰器(decorator)装饰 value就是一个简单的可注入的值 service是一个可注入的构造器 factory是一个可注入的方法 decorator可以修改或封装其他的供应商,当然除了constant provider是一个可配置的factory 以上就是对angularJS Provider、factory、service的资料整理,后续继续补充相关资料,谢谢大家对本站的支持! 您可能感兴趣的文章: 理解Angular的providers给Http添加默认headers 详解Angular中的自定义服务Service、Provider以及Factory AngularJS基于provider实现全局变量的读取和赋值方法 关于AngularJS中几种Providers的区别总结 angularJS Provider factory service 相关文章 angular 组件通信的几种实现方式 这篇文章主要介绍了angular 组件通信的几种实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-07-07 Angular.JS中的指令引用template与指令当做属性详解 这篇文章主要介绍了Angular.JS中的指令引用template与指令当做属性的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。 2017-03-03 Angularjs注入拦截器实现Loading效果 angularjs作为一个全ajax的框架,对于请求,如果页面上不做任何操作的话,在结果反回来之前,页面是没有任何响应的,不像普通的HTTP请求,会有进度条之类 2015-12-12 Angular利用HTTP POST下载流文件的步骤记录 这篇文章主要给大家介绍了关于Angular利用HTTP POST下载流文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Angular具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 2020-07-07 AngularJs定时器$interval 和 $timeout详解 这篇文章主要介绍了AngularJs定时器$interval 和 $timeout详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2017-05-05 angularjs中$http异步上传Excel文件方法 本篇文章给大家详细分析了angularjs中$http异步上传Excel文件方法,对此有需要的读者可以学习下。 2018-02-02 Angular模版驱动表单的使用总结 这篇文章主要介绍了Angular模版驱动表单的使用总结,本文实现了Angular支持表单的双向数据绑定,校验,状态管理,非常具有实用价值,需要的朋友可以参考下 2018-05-05 Angular4编程之表单响应功能示例 这篇文章主要介绍了Angular4编程之表单响应功能,结合实例形式分析了Angular4表单响应功能的具体实现步骤与相关操作技巧,需要的朋友可以参考下 2017-12-12 angular简介和其特点介绍 这篇文章主要介绍了angular简介和其特点介绍,本文讲解了关于和jquery的比较、关于适用场合、关于UI的结合、关于angularjs的特点等内容,需要的朋友可以参考下 2015-01-01 Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍 这篇文章主要给大家介绍了Angularjs中ng-repeat-start与ng-repeat-end的用法,文章开始先进行了简单的介绍,而后通过完整的实例代码详细给大家介绍这两者的用法,有需要的朋友们可以参考借鉴,下面来一起看看吧。 2016-12-12 最新评论

factory

用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了。

app.controller('myFactoryCtrl', function($scope, myFactory){
  $scope.artist = myFactory.getArtis();
});
app.factory('myFactory', function(){
  var _artist = '';
  var service = {};

  service.getArtist = function(){
    return _artist;
  }
  return service;
});

service

Service 是用”new”关键字实例化的。因此,你应该给”this”添加属性,然后 service 返回”this”。你把 service 传进 controller 之后,在controller里 “this” 上的属性就可以通过 service 来使用了。

app.controller('myFactoryCtrl', function($scope, myService){
  $scope.artist = myService.getArtis();
});
app.service('myService', function(){
  var _artist ='';
  this.getArtist = function(){
    return _artist;
  }
});

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()';
});

value和constant

$provide.value('myValue', 10);
$provide.constant('myConstant', 10);
/*


二者的区别:
1. value可以被修改,constant一旦声明就无法修改
2. value不可以在config中注入,constant可以。
*/

provider、factory、service三者的关系

app.provider('myDate', { 
  $get: function() { 
   return new Date(); 
  }
});
//可以写成
app.factory('myDate', function(){ 
 return new Date();
});
//可以写成
app.service('myDate', Date);

总结

  1. 所有的供应商都只被实例化一次,也就说他们都是单例的
  2. 除了constant,所有的供应商都可以被装饰器(decorator)装饰
  3. value就是一个简单的可注入的值
  4. service是一个可注入的构造器
  5. factory是一个可注入的方法
  6. decorator可以修改或封装其他的供应商,当然除了constant
  7. provider是一个可配置的factory

以上就是对angularJS Provider、factory、service的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

您可能感兴趣的文章:

  • 理解Angular的providers给Http添加默认headers
  • 详解Angular中的自定义服务Service、Provider以及Factory
  • AngularJS基于provider实现全局变量的读取和赋值方法
  • 关于AngularJS中几种Providers的区别总结
张贴在3