angularJS Provider、factory、service详解及实例代码
2016-09-21 09:52
1111 查看
用 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的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
您可能感兴趣的文章:
- AngularJS之自定义服务详解(factory、service、provider)
- Angularjs 设置全局变量的方法总结
- Angularjs全局变量被作用域监听的正确姿势
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- AngularJS内置指令
- AngularJS入门教程之学习环境搭建
- AngularJS实现元素显示和隐藏的几个案例
- angularJS中router的使用指南
- AngularJS实现表单验证
- angularjs 处理多个异步请求方法汇总
- AngularJS中的指令全面解析(必看)
- AngularJS基于provider实现全局变量的读取和赋值方法
相关文章推荐
- 详解Angular中的自定义服务Service、Provider以及Factory
- AngularJS Provider/Service/Factory 使用
- AngularJS ng-bind-html 指令详解及实例代码
- AngularJS bootstrap启动详解及实例代码
- angularJS factory() service() provider()
- angularjs model.service vs provider vs factory?
- angular.js中的factory,service,provider的区别
- AngularJs ng-route路由详解及实例代码
- Angularjs service factory provider
- AngularJS Factory Service Provider
- 实例代码详解jquery.slides.js
- AngularJS ng-change 指令的详解及简单实例
- angular中的factory、service和provider
- Angular中$cacheFactory的作用和用法实例详解
- AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
- angular 关于 factory、service、provider的相关用法
- Angular.js 实现数字转换汉字实例代码
- AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
- 关于动态执行代码(js的Eval)实例详解
- Angular中service、factory与provider的区别