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很像,但不一樣點在於他們不能被注入到模塊的配置方法中。