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 相关文章推荐
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
将光标定位于输入框最右侧实现代码
Dec 04 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
jQuery实现伪分页的方法分享
Feb 17 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
30分钟快速实现小程序语音识别功能
Nov 27 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
JavaScript多种图形实现代码实例
Jun 28 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
Javascript 二维数组
2009/11/26 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
python获取目录下所有文件的方法
2015/06/01 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
django rest framework 自定义返回方式
2020/07/12 Python
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
会计工作心得体会
2014/01/13 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
和睦家庭事迹
2014/05/14 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
八一建军节慰问信
2015/02/14 职场文书
三八节活动主持词
2015/07/04 职场文书
运动员代表致辞
2015/07/29 职场文书
2019各种保证书范文
2019/06/24 职场文书