早上开车上班, 发现车快没油了, 于是拐进加油站. 有一辆出租车也在加油..
 
Angular service在一个应用里是以单例形式存在的. 这个单例的实例是由service factory(service工厂)创建的.
 
  • 加油, 就好比是一个 Angular service;
  • 不论是我加的油, 还是出租车加的油, 都是从这个加油站同一个地下油罐取出来的同样的汽油. 大家使用的都是同一个汽油实例(单例);
  • 我的车与出租车共享了加的汽油的属性, 比如: 都是93#汽油, 掺水的比例, ...
因此, 在Angular里, 如下情况会考虑使用service:
  • 可重用的, 纯业务逻辑的代码, 与$scope无关的代码可以被写成service. DRY.
  • 用service共享数据, 因为在应用中, 对service的依赖都是引用同一个service实例
  • ...
------
开头写到 service 是由 service factory(是一个函数) 所创建, service factory 就好比上图的那2个油桶.
 
在Angular体系中, service factory 又是由 service provider(是构造函数) 所创建, service provider 就好比这个加油站.
设想如果加油站很大, 必须有一个指路牌, 标识出在哪儿加93#汽油. service provider 函数必须包含名为 $get 的属性, 它指向 service factory 函数. 就好比, $get 这个路标指示我们在哪儿找到93#加油点.
 
 
Angular 提供了5个创建service的方法, 由繁到简, 或具有特殊功能
  • .provider(provider)
  • .constant(obj)
  • .value(obj)
  • .factory(fn)
  • .service(class)
主要相比较的为 provider(), factory(), service() 3个函数.
用它们定义service时, 写法各不相同.
最终实例化的方式也不同.
provider() 好比整个加油站, 可配置性强, 程序员可以尽情发挥..
factory(), service() 次之, 哪里需要哪里搬, 定义简单, 
 
----
 
var provider = function() {

  this.$get = function factory() {

  }

}
 
 
 
 
 
 
 
 
 
 
 
 
 

Angular service, 服务的更多相关文章

  1. Angular中怎样创建service服务来实现组件之间调用公共方法

    Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...

  2. Angular定义服务-Learn By Doing

    1.服务(Service)介绍 Angular services are substitutable objects that are wired together using dependency ...

  3. Angular Service入门

    1.Angular内置service Angular为了方便开发者开发,本身提供了非常多的内置服务.可以通过https://docs.angularjs.org/api/ng/service查看Ang ...

  4. angular service provider

    关于  angular service factory  provider 方面有很多,我也来写一篇加深下印象 provider 是一切方法的基础,所以功能也最强,provider 用来定义一个可以被 ...

  5. AngularJS–service(服务)

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 服务 Angular的服务也是使用依赖注入(dependency injection ( ...

  6. AngularJS学习之 ngTable 翻页 功能以及利用angular service准备测试数据

    1.官网链接  https://github.com/esvit/ng-table#4.0.0 2.安装ngTable后,一定要记得先注册到自己的项目 .module('pttengApp', [ ' ...

  7. 解决VMWARE NAT SERVICE服务无法启动或服务消失的问题

    解决VMWARE NAT SERVICE服务无法启动或服务消失的问题 2016-02-02 11:18 2012人阅读 评论(2) 收藏 举报  分类: 网络通信(3)  今日使用VMware中的Wi ...

  8. 使用axis开发web service服务端

    一.axis环境搭建 1.安装环境 JDK.Tomcat或Resin.eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4下载A ...

  9. win7提示“User Profile Service服务未能登录”

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 最近,有个同事打电话告诉我说他的用户名无法登陆到系统,提示“User Profile Service服务未能登录,无法加载用户配置文 ...

随机推荐

  1. Reachability下载地址

    https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html

  2. intent的startActivityForResult()方法

      /******************************************************************************************** * au ...

  3. [Javascript] Array methods in depth - filter

    Array filter creates a new array with all elements that pass the test implemented by the provided fu ...

  4. IO-文件 File 复制 读写 总结

    一定要注意: 传入的参数,应该是包含文件名的完整路径名,不能把一个文件复制到[文件夹]中,因为[文件夹]本身是不能有输入输出流的,只能复制到一个[文件]中,否则会报异常. 以字节流读写的三种方式 pu ...

  5. 属性动画 LayoutTransition AnimatorInflater Keyframe 新特性

    LayoutTransition设置动画 使用LayoutTransition可为布局的容器设置动画,当容器中的视图层次发生变化时产生相应的过渡的动画效果 过渡的类型一共有四种: LayoutTran ...

  6. OD: ActiveX Vulnerabilities

    通过一个精心构造的页面 exploit 第三方软件中的 ActiveX 已经成为一种惯用攻击手段,众多知名软件公司都曾被发现其注册的 ActiveX 中存在严重的缓冲区溢出漏洞,一个被广泛使用的第三方 ...

  7. return;,return false,return true----------浅析

    作为新手,一直没注意他们的区别,今天特意在网上搜了搜. 1: retuen; 无返回值,表示终止函数往下执行 2: return true; a.返回 bool值 真 b.提交表单 针对<but ...

  8. (转)validateRequest="false"

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报错. 解决方案一: 在.aspx文件头中加入这句: <%@ Page validat ...

  9. 黑马程序员-out和ref

    C# 方法参数关键字:ref.out 当希望方法返回多个值时,声明 out方法很有用.使用 out参数的方法仍然可以将变量用作返回类型(请参见 return),但它还可以将一个或多个对象作为 out参 ...

  10. Nginx 反向代理配置实例(转)

    user www www; worker_processes ; error_log logs/error.log notice; pid logs/nginx.pid; worker_rlimit_ ...