angular 服务(factory service constant value provider)学习笔记

依赖注入(DI):必须具备三个要素

1、服务注册

2、依赖关系声明

3、对象的获取
在angular中,module 和$provide 相当于是服务的注册。injector用来获取对象。

如何创建获取模块

主要是通过 参数的个数来确定的和区分的

angular.module(模块名, [模块依赖的其他模块列表], [对模块的配置]);

## angular提供了3种获取依赖的方式:inference、annotation、inline方式 ##

$injector 其实是一个IOC容器 包含了很多服务

每个模块只有一个 rootScope injector,但可以有多个$scope 。

由于每个模块的injector是唯一的,所以 angular.element().injector()直接返回元素所在模块的injector 。

五种方法创建服务:

factory service constant value provider

  • factory 是用来注册服务的最常见方式,
    • factory(name,getFn) 服务名 函数
  • service 可以注册一个支持构造函数的服务

    • service(name,constructor) 名称 构造函数
  • provider 所有服务工厂都是有provider创建的

    • provider负责在$providerCache中注册服务
    • 有一个问题是 是否可以一直使用factory 替代privater,答案取决于是否需要用AngularJS的.config()函数来对.provider()方法返回的服务进行额外的扩展配置。同其他创建服务的方法不同,config()方法可以被注入特殊的参数
    • 使用.provider()方法,可以在多个应用使用同一个服务时获得更强的扩展性,特别是在不同应用或开源社区之间共享服务时。
    • 如果希望在config()函数中可以对服务进行配置,必须用provider()来定义服务
    • provider(name,aProvider) aProvider可以是数组、函数、对象
  • constant(name,value) 可以将一个已经存在的变量值注册为服务,并将其注入到应用的其他部分中。

    • constrant(name,value) name常量名字 value常量值
  • value(name,value) 如果服务$get方法返回的一一个常量,就没有必要定义一个包含复杂功能的完整服务,可以通过value()函数方便注册。
    • name服务名 常量值
何时使用 value 和 constant

value 和 constant之间的区别在于 常量可以注入到配置函数中 而值不行。

通常情况下,可以通过value()来注册服务对象或函数,用constant()来配置数据

注: injector get方法创建服务实例

最后提一下 decorator 装饰器 它的功能主要是运用在我们自己的服务上,也可以对angular的核心服务进行拦截、中断甚至替换操作。

调用形式为 decorator(name, decorator);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值