AngularJS服務詳解

大家應該知道椒惨,AngularJS是后端人員在工作之余發(fā)明的康谆,他主要應用了后端早就存在的分層思想嫉到。所以我們得了解下分層的作用何恶。

dao層:就是Model層,在后臺時惜辑,這一層的作用疫赎,就要是寫與數據庫交互數據的一層捧搞,在angularJS里就主要是寫ajax的。

service層:主查寫邏輯代碼的介粘,但在angularJS里也可以持久化數據(充當數據容器)晚树,以供不同的controller使用爵憎。

controller層:即控制層,在angularJS里就是寫控制器的巡雨∠控制器里盡量不要寫那些不必要的邏輯,盡量寫在service層里正蛙。

所以乒验,就有了創(chuàng)建自定義服務的幾種方式。


一狂塘、constant服務:

app.constant('name',obj)

name為服務的名字,obj為一個對象荞胡。

app.constant('APP_KEY','a1s2d3f4')

constant 用于定義常量泪漂,一旦定義就不能被改變歪泳。可以被注入到任何地方呐伞,但是不能被裝飾器(decorator)裝飾敌卓。

二冒萄、value服務:

app.value('name',obj)

name為服務的名字,obj為一個對象厦画。


與 constant 一樣,可以用來定義值。但與 constant 的區(qū)別是:可以被修改鞍历,可以被 decorator 裝飾,不能被注入到 config 中肪虎。

三劣砍、factory服務:

app.factory('name',function(){return obj})

name為服務的名字,第二個參數傳入一個函數,函數需要有一個返回值obj,返回一個對象。實際被注入的服務就是這個對象扇救。


factory服務是最常見最常用的服務類型,幾乎可以滿足90%的自己開發(fā)的需求,使用它可以編寫一些邏輯,通過這些邏輯最后返回所需要的對象. 它和constant,value最大的區(qū)別是,factory服務是有一個處理過程,經過這個過程,才返回結果的.

四、service服務

app.service('name',constructor)

name為服務的名字,constructor是一個構造函數迅腔。


service和factory的區(qū)別在于,它第二個參數傳入的是一個構造函數,最后被注入的服務是這個構造函數實例化以后的結果.所以基本上使用service創(chuàng)建的服務的,也都可以使用factory來創(chuàng)建装畅。

五、provider服務

app.factory('name',function(){})

name為服務的名字,第二個參數接受一個函數,函數由兩部分組成沧烈。第一部分的變量和函數是可以在 app.config 函數中訪問的掠兄。第二部分的變量和函數是通過 $get() 函數返回的

$get方法就相當于factory服務的第二個參數,最后要返回一個對象,這個對象就是真正被注入的服務。


怎么選擇這些服務的使用?

一些固定的參數和方法,使用constant

可能被修改的參數和方法,使用value

通過邏輯處理后得到的參數或方法,使用factory

可以使用factory的也可以使用service,反之亦然(一般就是用factory)

可以手動配置參數的服務,使用provider


decorator是什么蚂夕?

decorator比較特殊迅诬,它不是 provider 。它是$provider服務的一種方法,它是用來裝飾其他 provider 的婿牍,不過 constant 除外

它接受兩個參數,第一個參數'name',是要被裝飾的服務的名字,第二個參數是一個函數,函數中注入$delegate,$delegate就是被裝飾的服務的實例,然后在函數中操作$delegate,就相當于操作了該服務的實例.


參考文獻:

angularjs中的幾種服務的詳細分析:

angular五種服務詳解:

AngularJS中的Provider們:Service和Factory等的區(qū)別:


拓展思考:

config和run是做什么的侈贷?

AngularJS 運行應用的兩個階段。config 階段是設置任何的 provider 的階段等脂。也是設置任何的指令俏蛮,控制器,過濾器以及其它東西的階段上遥。在 run 階段嫁蛇,AngularJS 會編譯你的 DOM 并啟動應用。

服務的本質和調用方法

從代碼層面來看露该,服務其實一個單例(可以是任何類型)睬棚,被所有的調用者所共享(在一個angular應用生命周期內,它只會被初始化一次)解幼。通過依賴注入調用抑党。?

為什么constant不能被裝飾?

constant不是被provider創(chuàng)建的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末撵摆,一起剝皮案震驚了整個濱河市底靠,隨后出現的幾起案子,更是在濱河造成了極大的恐慌特铝,老刑警劉巖暑中,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異鲫剿,居然都是意外死亡鳄逾,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門灵莲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雕凹,“玉大人,你說我怎么就攤上這事政冻∶兜郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵明场,是天一觀的道長汽摹。 經常有香客問我,道長苦锨,這世上最難降的妖魔是什么逼泣? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任趴泌,我火速辦了婚禮,結果婚禮上圾旨,老公的妹妹穿的比我還像新娘踱讨。我一直安慰自己,他們只是感情好砍的,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布痹筛。 她就那樣靜靜地躺著,像睡著了一般廓鞠。 火紅的嫁衣襯著肌膚如雪帚稠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天床佳,我揣著相機與錄音滋早,去河邊找鬼。 笑死砌们,一個胖子當著我的面吹牛杆麸,可吹牛的內容都是我干的。 我是一名探鬼主播浪感,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼昔头,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了影兽?” 一聲冷哼從身側響起揭斧,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎峻堰,沒想到半個月后讹开,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡捐名,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年旦万,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐筏。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡纸型,死狀恐怖,靈堂內的尸體忽然破棺而出梅忌,到底是詐尸還是另有隱情,我是刑警寧澤除破,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布牧氮,位于F島的核電站,受9級特大地震影響瑰枫,放射性物質發(fā)生泄漏踱葛。R本人自食惡果不足惜丹莲,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尸诽。 院中可真熱鬧甥材,春花似錦、人聲如沸性含。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽商蕴。三九已至叠萍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绪商,已是汗流浹背苛谷。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留格郁,地道東北人腹殿。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像例书,于是被迫代替她去往敵國和親锣尉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • 一.constant服務: app.constant("name",obj) name為服務的名字,obj為一個j...
    A你叫阿鈞閱讀 416評論 0 1
  • 出于內存占用和性能的考慮雾叭,控制器只會在需要時被實例化悟耘,并且不再需要就會被銷毀。這意味著每次切換路由或重新加載視圖時...
    oWSQo閱讀 498評論 0 1
  • 1织狐、angularjs的幾大特性是什么暂幼? 雙向數據綁定、依賴注入移迫、模板旺嬉、指令、MVC/MVVM 2厨埋、列舉幾種常見的...
    2e9a10d418ab閱讀 1,258評論 0 10
  • 1邪媳、angularjs的幾大特性是什么? 雙向數據綁定荡陷、依賴注入雨效、模板、指令废赞、MVC/MVVM 2徽龟、列舉幾種常見的...
    秀才JaneBook閱讀 1,539評論 0 22
  • ng-model 指令ng-model 指令 綁定 HTML 元素 到應用程序數據。ng-model 指令也可以:...
    壬萬er閱讀 861評論 0 2