更新時間:2021-11-23 來源:黑馬程序員 瀏覽量:
在AngularJS中,服務(wù)是一個可以在AngularJS應用中使用的函數(shù)或?qū)ο?,是對公共功能代碼的抽取。例如,多個控制器中出現(xiàn)了相同的代碼,那么便可以把它提取出來,封裝成一個服務(wù)。
因為服務(wù)能夠達到代碼復用的目的,所以建議將控制器、指令中的業(yè)務(wù)邏輯都封裝到服務(wù)中去。服務(wù)的概念通常與依賴注入緊密相關(guān),通過依賴注入的方式可以把服務(wù)注入模塊、控制器和其他服務(wù)中。依賴注入要求對象是單例的,所以服務(wù)通常都是單例的,并且在需要的時候才會被$injector實例化。
AngularJS提供了如下幾種創(chuàng)建服務(wù)的方式。
·使用provider()函數(shù)創(chuàng)建服務(wù)(提供者):使用一個具有$get()的構(gòu)造函數(shù)定義服務(wù),然后使用模塊的provider()函數(shù)進行登記,返回服務(wù)實例。
理解依賴注入需要注意幾個關(guān)鍵問題,具體如下。
·誰依賴于誰:用戶對象依賴于IoC容器。
·為什么需要依賴:用戶對象需要IoC容器來提供自己需要的外部資源。
·誰注入誰:IoC容器向用戶對象注入用戶對象所依賴的對象。
·注入了什么內(nèi)容:注入用戶對象所需要的外部資源。
在依賴注入中,被注入的對象都是單例對象,創(chuàng)建一個對象后便可以在程序中一直使用它。