Angular依賴注入詳解

1.依賴注入
依賴注入作為控制反轉(zhuǎn)的一種實(shí)現(xiàn)馏段。所有的DI實(shí)現(xiàn)都需要兩個(gè)關(guān)鍵環(huán)節(jié)。
1.注冊(cè)機(jī)制(向容器中注冊(cè)服務(wù))
2.注入并使用(使用的時(shí)候如何申明)

2.angular運(yùn)行環(huán)境體系
<html>
<script src='angular.js'></script>
<script>
var app = angular.module("myApp",[ui-router]);
app.directive('aDirective',function(){})//注入指令
app.controller(firstController,function($scope){})//注入控制器
app.config();//可以注入provider constant溉瓶,修改全局模版,提供元provider
app.run();//可以注入provider factory service value constant 保存全局變量舆逃,使用config中的元provider
app.factory();//注冊(cè)服務(wù)
app.filter();//注冊(cè)過濾器
app.provider('service1',function(){})//注冊(cè)服務(wù)
</script>
<div ng-app="myApp" ng-controller="firstController"></div>
</html>
因此可以看到,依賴注入可以在任何時(shí)候進(jìn)行。只要注冊(cè)了服務(wù)即可鸵赫。

3.注冊(cè)機(jī)制
通過五個(gè)組件進(jìn)行注冊(cè)。
1.value(app.value 在controller回調(diào)中使用)
2.factory(app.factory(a,function(){}) 在service和controller回調(diào)中使用)
3.service(app.service(a,function(){})可以注入factory或者provider中注冊(cè)的服務(wù))
4.provider(app.conf($provider){$provider.provide(a,function(){})})app.provider 在config中注入$provider躏升,使用$provider.provider注冊(cè)
5.constant(app.constant(a,'1'))

4.注入并使用
注入的方式主要有三種:
1.數(shù)組方式:myApp.controller('a',[$a,$b,function(){$a,$b}]));
2.$inject:myApp.controller(a,function($a,$b){}) controller.inject=['$a','$b'];
3.隱式:myApp.controller(a,function($a,$b){})

5.總結(jié)
依賴注入的注冊(cè)主要通過兩種形式辩棒。
1.直接通過全局模塊,注冊(cè) app.facotry app.service app.value app.constant膨疏。這種方式使用簡(jiǎn)單一睁,但是在config之后加載,并且不能配置佃却。
2.通過app.provider(A)+config($Aprovider),在config中使用$Aprovider.service 注冊(cè)并修改服務(wù)方式者吁。
6.源碼
主要通過Function.prototype.toString方法實(shí)現(xiàn)。通過apply執(zhí)行饲帅。
代碼見github https://github.com/etoah/Eg/blob/master/Angular/di.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末复凳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灶泵,更是在濱河造成了極大的恐慌育八,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赦邻,死亡現(xiàn)場(chǎng)離奇詭異髓棋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門按声,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膳犹,“玉大人,你說我怎么就攤上這事签则⌒氪玻” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵渐裂,是天一觀的道長(zhǎng)豺旬。 經(jīng)常有香客問我,道長(zhǎng)芯义,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任妻柒,我火速辦了婚禮扛拨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘举塔。我一直安慰自己绑警,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布央渣。 她就那樣靜靜地躺著计盒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芽丹。 梳的紋絲不亂的頭發(fā)上北启,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音拔第,去河邊找鬼咕村。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蚊俺,可吹牛的內(nèi)容都是我干的懈涛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泳猬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼批钠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起得封,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤埋心,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忙上,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踩窖,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年晨横,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洋腮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫柳。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啥供,靈堂內(nèi)的尸體忽然破棺而出悯恍,到底是詐尸還是另有隱情,我是刑警寧澤伙狐,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布涮毫,位于F島的核電站,受9級(jí)特大地震影響贷屎,放射性物質(zhì)發(fā)生泄漏罢防。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一唉侄、第九天 我趴在偏房一處隱蔽的房頂上張望咒吐。 院中可真熱鬧,春花似錦属划、人聲如沸恬叹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绽昼。三九已至,卻和暖如春须蜗,著一層夾襖步出監(jiān)牢的瞬間硅确,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工明肮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疏魏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓晤愧,卻偏偏與公主長(zhǎng)得像大莫,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子官份,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Angular算是將后端開發(fā)工程化引入前端的先驅(qū)之一,而Dependency injection依賴注入(后面簡(jiǎn)稱...
    點(diǎn)融黑幫閱讀 2,252評(píng)論 0 5
  • 1只厘、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定舅巷、依賴注入羔味、模板、指令钠右、MVC/MVVM 2赋元、列舉幾種常見的...
    2e9a10d418ab閱讀 1,271評(píng)論 0 10
  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定搁凸、依賴注入媚值、模板、指令护糖、MVC/MVVM 2褥芒、列舉幾種常見的...
    秀才JaneBook閱讀 1,542評(píng)論 0 22
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)嫡良,斷路器锰扶,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • Angular面試題 一、ng-show/ng-hide與ng-if的區(qū)別寝受? 第一點(diǎn)區(qū)別是坷牛,ng-if在后面表達(dá)式...
    w_zhuan閱讀 5,527評(píng)論 0 26