AngularJs的一些扯淡的服務(wù)

? ? ?$provide告訴angularJs如何創(chuàng)建一個(gè)新的可注入的東西:即服務(wù)。通過$provide的provider方法創(chuàng)建出不同的供應(yīng)商,$provide被注入到config中獲取$provide服務(wù)然后利用不同的供應(yīng)商定義服務(wù)。其中定義供應(yīng)商的辦法:constant,定義常量的,他定義的值不能被改變,它可以被注入到任何地方,但是不能被decorator修飾;value,可以是string、number、function,可以被改變,但是不能注入到config中,可以被decorator修飾;service,一個(gè)可注入的構(gòu)造器,可用于controller中的數(shù)據(jù)共享或者通信;factory,一個(gè)可注入的function;provider,一個(gè)可配置的factory,有一個(gè)$get方法;decorator,用來裝飾其他$provider。

? ? ?使用factory創(chuàng)建服務(wù)的時(shí)候,相當(dāng)于新創(chuàng)建一個(gè)對象,然后在這個(gè)對象上添加屬性,最后返回這個(gè)對象,當(dāng)把這個(gè)服務(wù)注入到控制器的時(shí)候,控制器可以訪問這個(gè)對象上的屬性。使用service創(chuàng)建服務(wù)的時(shí)候,相當(dāng)于用new關(guān)鍵詞進(jìn)行實(shí)例化,因此只需要在this上添加屬性或方法,最后會(huì)自動(dòng)返回this。provider唯一一個(gè)可以創(chuàng)建用來注入到config中的服務(wù)。

? ? ?$digest大致可以理解為整個(gè)ng中的一個(gè)臟檢查循環(huán),$apply大致可以理解為從正常的js跳到angularjs的上下文中其實(shí)也可以將某些東西加入到angular的臟檢查循環(huán)中,$watch監(jiān)聽ng中的相關(guān)屬性方法值的改變。這就要說到我們的雙向綁定了,在整個(gè)angualr中的初始操作的時(shí)候?qū)⑺邢嚓P(guān)元素加入到digest循環(huán)并且綁定watch去監(jiān)聽,當(dāng)有事件進(jìn)入就會(huì)觸發(fā)digest循環(huán)去查看有那些發(fā)生了變化并去作出改變,當(dāng)然如果有一些元素需要加入到循環(huán)中去監(jiān)控這就需要用到apply,或者是說有一些不通過事件去改變元素也需要用到apply,這就做出了兩種 一種事件進(jìn)入自動(dòng)觸發(fā)apply引起digest循環(huán)去watch元素變化,另一種則是手動(dòng)啟動(dòng)apply。

? ? $eval==>$parse大致可以理解為解析界面中的表達(dá)式,eval我們很熟悉就是執(zhí)行js字符串,在ng中呢它則是去走parse將頁面中的那些表達(dá)式(雙向綁定)去解析成我們需要的值,那么接著說$compile大致理解為將一些html字符串解析成dom元素,但是它的解析是根據(jù)從dom樹以及rootscope中的各個(gè)節(jié)點(diǎn)解析出字符串中的各個(gè)動(dòng)作返回去一個(gè)符合ng中統(tǒng)一需求的dom。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定、依賴注入、模板、指令、MVC/MVVM 2、列舉幾種常見的...
    2e9a10d418ab閱讀 1,464評論 0 10
  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定、依賴注入、模板、指令、MVC/MVVM 2、列舉幾種常見的...
    秀才JaneBook閱讀 1,604評論 0 22
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • Angular面試題 一、ng-show/ng-hide與ng-if的區(qū)別? 第一點(diǎn)區(qū)別是,ng-if在后面表達(dá)式...
    w_zhuan閱讀 5,707評論 0 26
  • AngularJSAngularJS 是一個(gè) MV* 框架, 最適于開發(fā)客戶端的單頁面應(yīng)用。它不是個(gè)功能庫,...
    一直以來都很好閱讀 953評論 0 0

友情鏈接更多精彩內(nèi)容