AngularJS學(xué)習(xí)筆記(一)模塊远寸、作用域抄淑、雙向數(shù)據(jù)綁定

AngularJS四大核心特性:MVC、模塊化驰后、指令系統(tǒng)肆资、雙向數(shù)據(jù)綁定。
  • MVC
image.png

好處:職責(zé)清晰灶芝,代碼模塊化郑原,可復(fù)用(特別是Model和View)唉韭。

  • 模塊
    一切都是從模塊開(kāi)始。
    一個(gè)應(yīng)用可包含多個(gè)模塊犯犁,每一個(gè)模塊都包含了定義具體功能的代碼属愤。
    使用模塊的好處:
  1. 保持全局命名空間的清潔
  2. 編寫(xiě)測(cè)試代碼更容易,并能保持其清潔酸役,以便更容易找到相互隔離的功能
  3. 易于在不同應(yīng)用間復(fù)用代碼
  4. 使應(yīng)用能夠以任意順序加載代碼的各個(gè)部分
    使用angular.module()的方法來(lái)聲明模塊:
//接受兩個(gè)參數(shù)住诸,第一個(gè)是模塊的名稱(chēng),第二個(gè)是依賴(lài)列表涣澡,即可以被注入到模塊中的對(duì)象列表贱呐。
angular.module('myApp',[]);

如果調(diào)用這個(gè)方法時(shí)只傳遞一個(gè)參數(shù),那么該方法只用來(lái)引用該模塊:

//引用名為myApp的模塊
angular.module('myApp');
  • 作用域
    作用域是什么入桂?
  1. 是表達(dá)式執(zhí)行的上下文
  2. 是定義應(yīng)用業(yè)務(wù)邏輯奄薇、控制器方法和視圖屬性的地方
  3. 是視圖和控制器之間的膠水,在應(yīng)用將視圖渲染并呈現(xiàn)給用戶(hù)之前事格,視圖中的模板和作用域進(jìn)行連接,然后應(yīng)用會(huì)對(duì)DOM進(jìn)行設(shè)置以便將屬性變化通知給AngularJS
  4. 作用域提供了監(jiān)視數(shù)據(jù)模型變化的能力
  5. 將應(yīng)用的業(yè)務(wù)邏輯都放在控制器中搞隐,將相關(guān)的數(shù)據(jù)都放在控制器的作用域中驹愚,是比較完美的架構(gòu)
  6. $scope對(duì)象在AngularJS中充當(dāng)數(shù)據(jù)模型,但與傳統(tǒng)的數(shù)據(jù)模型不一
    樣劣纲,$scope并不負(fù)責(zé)處理和操作數(shù)據(jù)逢捺,它只是視圖和HTML之間的橋梁,它的所有屬性都可以自動(dòng)被視圖訪問(wèn)到

關(guān)于作用域的簡(jiǎn)單代碼:

<body>
   <div ng-app="myApp">
       <h1>Hello {{name}}</h1>
   </div>
</body>
<script>
    angular.module('myApp',[]).run(function($rootScope){//$rootScope是所有$scope對(duì)象的最上層癞季,AngularJS啟動(dòng)并生成視圖時(shí)劫瞳,會(huì)將根ng-app元素同$rootScope進(jìn)行綁定
        $rootScope.name = "World"
    })
</script>

運(yùn)行結(jié)果:

image.png

但在實(shí)際情況中,我們一般不會(huì)在$rootScope上附加業(yè)務(wù)邏輯绷柒,以免污染全局作用域志于。我們可以用控制器創(chuàng)建一個(gè)隔離的子$scope對(duì)象:

<body>
   <div ng-app="myApp">
       <div ng-controller="MyController">
           <h1>Hello {{name}}</h1>
       </div>
   </div>
</body>
<script>
    angular.module('myApp',[]).controller('MyController',
         function($scope){
             $scope.name = "World";
         }
    )
</script>

運(yùn)行結(jié)果同上。

作用域的基本功能有:

  1. 提供觀察者以監(jiān)視數(shù)據(jù)模型的變化
  2. 可以將數(shù)據(jù)模型的變化通知給整個(gè)應(yīng)用废睦,甚至是系統(tǒng)外的組件
  3. 可以進(jìn)行嵌套伺绽,隔離業(yè)務(wù)功能和數(shù)據(jù)
  4. 給表達(dá)式提供運(yùn)算時(shí)所需的執(zhí)行環(huán)境

$scope對(duì)象的生命周期處理有四個(gè)不同階段:

  1. 創(chuàng)建
    創(chuàng)建新控制器或指令時(shí),AngularJS會(huì)創(chuàng)建一個(gè)新的作用域嗜湃。
  2. 鏈接
    當(dāng)AngularJS開(kāi)始運(yùn)行時(shí)奈应,所有的$scope對(duì)象都會(huì)附加或者鏈接到視圖中。
  3. 更新
    當(dāng)事件循環(huán)運(yùn)行時(shí)购披,它通常執(zhí)行在$rootScope對(duì)象上杖挣,每個(gè)子作用域都執(zhí)行自己的臟值檢測(cè)。
  4. 銷(xiāo)毀
    當(dāng)一個(gè)$scope在視圖中不再需要時(shí)刚陡,這個(gè)作用域會(huì)清理和銷(xiāo)毀自己惩妇。
  • 雙向數(shù)據(jù)綁定
    簡(jiǎn)單來(lái)說(shuō)雙向數(shù)據(jù)綁定可以總結(jié)為下圖:
image.png

數(shù)據(jù)綁定使我們可以將視圖理解為模型狀態(tài)的映射株汉,當(dāng)客戶(hù)端的數(shù)據(jù)模型發(fā)生變化時(shí),視圖就能反映出這些變化屿附。AngularJS會(huì)記錄數(shù)據(jù)模型所包含的數(shù)據(jù)在任何特定時(shí)間的值郎逃,而非初始值。當(dāng)AngularJS認(rèn)為某個(gè)值可能發(fā)生變化的時(shí)候挺份,它會(huì)運(yùn)行自己的事件循環(huán)來(lái)檢查這個(gè)值是否變“臟”褒翰,如果該值從上次事件循環(huán)運(yùn)行之后發(fā)生了變化,則該值會(huì)被認(rèn)為是“臟”值匀泊,這個(gè)過(guò)程被稱(chēng)作臟檢查优训。AngularJS會(huì)在事件循環(huán)時(shí)執(zhí)行臟檢查來(lái)保證數(shù)據(jù)的一致性。

簡(jiǎn)單的雙向數(shù)據(jù)綁定小例子:

<div ng-app="">
    <p>名字 : <input type="text" ng-model="name"></p>
    <h1>Hello {{name}}</h1>
</div>
  • 效果:
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末各聘,一起剝皮案震驚了整個(gè)濱河市揣非,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躲因,老刑警劉巖早敬,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異大脉,居然都是意外死亡搞监,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)镰矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琐驴,“玉大人,你說(shuō)我怎么就攤上這事秤标【” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵苍姜,是天一觀的道長(zhǎng)牢酵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)衙猪,這世上最難降的妖魔是什么茁帽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮屈嗤,結(jié)果婚禮上潘拨,老公的妹妹穿的比我還像新娘。我一直安慰自己饶号,他們只是感情好铁追,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著茫船,像睡著了一般琅束。 火紅的嫁衣襯著肌膚如雪扭屁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天涩禀,我揣著相機(jī)與錄音料滥,去河邊找鬼。 笑死艾船,一個(gè)胖子當(dāng)著我的面吹牛葵腹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屿岂,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼践宴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了爷怀?” 一聲冷哼從身側(cè)響起阻肩,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎运授,沒(méi)想到半個(gè)月后烤惊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吁朦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年柒室,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喇完。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伦泥,死狀恐怖剥啤,靈堂內(nèi)的尸體忽然破棺而出锦溪,到底是詐尸還是另有隱情,我是刑警寧澤府怯,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布刻诊,位于F島的核電站,受9級(jí)特大地震影響牺丙,放射性物質(zhì)發(fā)生泄漏则涯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一冲簿、第九天 我趴在偏房一處隱蔽的房頂上張望粟判。 院中可真熱鬧,春花似錦峦剔、人聲如沸档礁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呻澜。三九已至递礼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羹幸,已是汗流浹背脊髓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栅受,地道東北人将硝。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像窘疮,于是被迫代替她去往敵國(guó)和親袋哼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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