一.constant服務(wù):
app.constant('name',obj)
name為服務(wù)的名字,obj為一個json對象.
constant創(chuàng)建服務(wù)返回一個json對象(也就是第二個參數(shù)中傳入的對象),這個對象里可以有參數(shù),可以有方法,并且,屬性和方法都可以在控制器中修改,新增,但是按照它的設(shè)計本意,一般constant創(chuàng)建的服務(wù)不會去修改它的內(nèi)容,需要修改內(nèi)容,最好用value來創(chuàng)建服務(wù).
二.value服務(wù):
app.value('name',obj)
name為服務(wù)的名字,obj為一個json對象.
value創(chuàng)建服務(wù)返回一個json對象(也就是第二個參數(shù)中傳入的對象),這個對象里可以有參數(shù),可以有方法,并且,屬性和方法都可以在控制器中修改,新增,按照它的設(shè)計本意,如果屬性和方法需要被修改內(nèi)容,就用value來創(chuàng)建服務(wù).
constant和value主要就是用于存放一些數(shù)據(jù)或方法以供使用,區(qū)別是constant一般是存放固定內(nèi)容,value存放可能會被修改的內(nèi)容
三.factory服務(wù)
app.factory('name',function(){returnobj})
name為服務(wù)的名字,第二個參數(shù)傳入一個函數(shù),函數(shù)需要有一個返回值obj,返回一個對象.實際被注入的服務(wù)就是這個對象.
factory服務(wù)是最常見最常用的服務(wù)類型,幾乎可以滿足90%的自己開發(fā)的需求,使用它可以編寫一些邏輯,通過這些邏輯最后返回所需要的對象.比如使用$http來獲取一些數(shù)據(jù).我們就在factory創(chuàng)建的服務(wù)里抓取數(shù)據(jù),最后返回.
它和constant,value最大的區(qū)別是,factory服務(wù)是有一個處理過程,經(jīng)過這個過程,才返回結(jié)果的.
四.service服務(wù)
app.service('name',constructor)
name為服務(wù)的名字,constructor是一個構(gòu)造函數(shù).
service和factory的區(qū)別在于,它第二個參數(shù)傳入的是一個構(gòu)造函數(shù),最后被注入的服務(wù)是這個構(gòu)造函數(shù)實例化以后的結(jié)果.所以基本上使用service創(chuàng)建的服務(wù)的,也都可以使用factory來創(chuàng)建.
所以這里,factory服務(wù)的第二種寫法和使用service是一致的: