angularjs 中 Factory,Service,Provider 之间的区别
本片文章是使用了 angularjs 中使用 service 在controller 之间 share 对象和数据 的code(http://jsfiddle.net/kn46u0uj/1/) 来进行演示 Factory,Service,Provider 之间的区别
1. Factory
factory('dataService',function(){
return {
golbal_sitename:"this is the shared value",
sayHello:function(msg){
alert(msg);
}
}
})
注意看上面的代码,我们定义dataService 里面 ,后面的funciton 直接返回的是一个对象。 反回对象里面可以定义属性和方法,上面就是返回了一个golbal_sitename属性和sayHello方法。
简单点说就是: 在factory 定义的function 返回的对象上面定义些属性和方法, 等注入到controller后,就可以在controller调用这些属性和方法了。
2. 我们来用service改写上面的代码
service('dataService',function(){
this.golbal_sitename = "this is the shared value";
this.sayHello = function(msg){
alert(msg);
};
});
注意上面的代码和factory 定义的区别,这里我们去掉了return 添加了this关键字。换句话说 factory 定义里面的function 其实是返回个对象,而service 定义里面的funciton 返回的是个类定义。
也就是说service 里面定义的dataService 最后是通过new 后面定义的function 来实例化的。
http://jsfiddle.net/kn46u0uj/3/
3. 使用Provider再次改写代码
Provider 定义的 service 可以传进 .config() 函数。当我们需要在service 启用前配置其模块参数时,就需要使用Provider来定义service.
代码如下:
provider('dataService',function(){
this.$get = function(){
return {
golbal_sitename:"this is the shared value",
sayHello:function(msg){
alert(msg);
}
}
};
})
http://jsfiddle.net/kn46u0uj/5/
上面使用三种方式定义的service 都可以正常工作, 唯一需要注意的就是使用当service 需要传入到config中进行配置的时候,一定要使用provider进行定义。
最新文章
- [JavaEE笔记]Cookie
- MyBatis学习--mybatis开发dao的方法
- jquery判断checkbox是否选中及改变checkbox状态
- 字符匹配算法之Boyer-Moore算法
- NOIP2014感想
- GlusterFS特性介绍
- git rm
- CheckBox控件实现选项的选中
- pureMVC java版搭建流程
- [leetcode-593-Valid Square]
- CSS缩写的样式
- 3D Slicer中文教程(六)—调用matlab函数(MatlabBridge使用方法)
- pip install -r requirements.txt
- 用Java执行Python:Jython踩坑笔记
- python自动化开发-[第七天]-面向对象
- 关于Runtime error
- android中Fragment的使用
- 07_Flume_regex interceptor实践
- php about session store db or cache
- 大聊Python----IO口多路复用
热门文章
- subsequence 1
- CentOS 6.9 安装配置zeromq、jzmq
- appium自动化测试- 元素操作
- 在windows命令行下安装和使用babel(es6to5)
- 用 Flask 来写个轻博客 (15) — M(V)C_实现博文页面评论表单
- linux shell unzip multiple zip files
- 转 关于Raid0,Raid1,Raid5,Raid10的总结
- maven项目中 把依赖的jar包一起打包
- 关于JS递归函数求斐波那契数列两种实现方法
- sort的排序及使用