创建服务

Angular提供了几种有用的服务,对于所有的应用来说,你将会发现这些服务对于创建你自己的服务是有用处的。为了创建自己的服务,你应该从通过一个模块(module)注册一个服务工厂方法开始(可以使用Module#factory api或者直接使用模块配置方法中的$provide api)。

所有的Angular服务通过使用在一个命名(id)下的Angular DI(依赖注入)系统来注册它们自己以参与到依赖注入中,就像声明的依赖需要提供给注册服务的工厂方法一样。

注册服务

为了注册一个服务,你必须有一个模块(你要注册的服务将会是这个模块的一部分)。换句话说,你可以注册带有通过Module Api或在模块配置方法中使用$provide服务的模块的服务。例如:

注意:你不是在注册一个服务实例,而是工厂方法将会在创建服务实例的时候被调用。

依赖

服务不仅仅可以被依赖,还可以有它们自己的依赖。这些依赖能够被作为工厂方法的参数指定。(阅读更多

接下来是一个非常简单的例子。这个服务依赖$window服务并且仅仅是一个方法。这个服务简单的存储所有的通知;在第三个后,服务展示window警告的所有通知。

参考:

实例化Angular服务

在Angular中所有的服务使用消极的实例化方式。这意味着一个服务仅当它被需要实例化一个服务或被一个应用组件依赖的时候被创建。另一方面,除非服务被应用直接或间接注册,Angular将不会实例化服务。

单例模式的服务

最后,意识到所有的Angular服务是应用程序内唯一是重要的。这意味着,在每一个注射器中仅仅有一个被给予的服务的实例。由于Angular是“极度讨厌”全局状态的,创建多个注射器是可能的,每一个注射器有它自己的服务实例,但是这是非常稀少的。

最新文章

  1. 相克军_Oracle体系_随堂笔记007-PGA
  2. [原创]Matlab生成随机数
  3. [转]JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
  4. IOS基础之 (一) OC基础语法
  5. Bug2算法的实现(RobotBASIC环境中仿真)
  6. ORA-12545:Connect failed beacuse target host or object does not exist
  7. 【转】android获取屏幕宽度和高度
  8. Let's go home
  9. Collection使用方法
  10. Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例
  11. Matlab定义子函数
  12. 深耕教育行业,RealSeer联合黑晶科技发布“AR超级教室”
  13. TypeMismatchException: Provided id of the wrong type for class zhongfucheng.user.entity.User.
  14. Python学习笔记(二):字典
  15. 环同态p64推论
  16. idea svn配置报错:Can't use Subversion command line client:svn
  17. ElasticSearch实践系列(一):安装
  18. Slitaz定制
  19. [LeetCode] 101. Symmetric Tree_ Easy tag: BFS
  20. python Django 之 Model ORM inspectdb(数据库表反向生成)

热门文章

  1. 【[USACO16OPEN]262144】
  2. luogu P2424 约数和
  3. POJ 1830 开关问题 【01矩阵 高斯消元】
  4. CodeForces-822D 【最小素因子应用】
  5. PHP设计模式——装饰器模式
  6. vue快速使用
  7. centOS 7 更改root密码
  8. Javascript 基础汇总
  9. c语言描述的顺序栈实现
  10. Python条件判断