angularJS Provider、factory、service详解及实例代码


Posted in Javascript onSeptember 21, 2016

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的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
Javascript 读后台cookie代码
Sep 15 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
详解React之key的使用和实践
Sep 29 Javascript
如何从头实现一个node.js的koa框架
Jun 17 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
JavaScript获取时区实现过程解析
Sep 24 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
Sep 21 #Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 #Javascript
D3.js实现折线图的方法详解
Sep 21 #Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 #Javascript
angular route中使用resolve在uglify压缩后问题解决
Sep 21 #Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 #Javascript
D3.js实现柱状图的方法详解
Sep 21 #Javascript
You might like
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python探索之修改Python搜索路径
2017/10/25 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
python返回数组的索引实例
2019/11/28 Python
PyTorch中permute的用法详解
2019/12/30 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
公务员年度个人总结
2015/02/12 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python