Angular服务是一个由服务工厂建立的单例对象。这些服务工厂是由 service provider 依次建立的。而service providers是构造函数。它们必须包含一个$get属性用于在实例化的时候返回服务工厂。angularjs
当你请求一个服务,$injector负责找到正确的service provider,而后将它实例化获得service factory,并调用service factory的 $get 方法来获得服务的实例。
api
$get
属性来返回这个 factory 方法。$get
属性来使用该构造方法实例化一个新的对象。参数 | 类型 | 详细 |
---|---|---|
name | string | 实例(也就是service factory)名称。记住:它的 provider 须要经过 |
provider | Object/function() | 若是这个 provider 是:ide
|
注册一个service factory,它用于返回一个service 的实例。这是一个注册service factory的简单的写法,由于它的provider 仅仅包含一个 $get 属性。若是你不须要在provider中配置你的 service ,那你能够使用它。函数
参数 | 类型 | 详细 |
---|---|---|
name | string | 实例的名称spa |
$getFn | function() | 建立实例的$get方法。 本质来讲这是一个 |
注册一个构造方法, 它会经过new方法来建立service实例。 这也是一个$provide.provider(name, {$get: $getFn})的简写法,但这里$getFn是一个构造函数,而后经过new来返回服务的实例。
对象
若是你将你的服务定义为一个type或class,你应该使用$provide.service(class)。blog
经过 $injector 注册一个value service,它能够是一个字符串、数值、数组、对象或者方法。该值实际上也是经过它的provider的$get属性,一个没有参数的方法来返回的value service。字符串
它跟constant services很像,但不一样点在于他们不能被注入到模块的配置方法中。