標籤:mvc min watch 自動 view javascrip bind r.js stc
基本知識:http://www.runoob.com/angularjs/angularjs-tutorial.html
下載angularjs網址:http://www.bootcdn.cn/angular.js/
AngularJS概念:
1.MVC
封裝資料代碼(model),應用邏輯代碼(controller),頁面渲染資料代碼(view),三層獨立分離
Angular中,視圖就是Documenet Object Model, 控制器就是Javascript類,資料模型就是儲存在對象的屬性中
2.資料繫結
資料繫結可以自動將model和view間的資料同步,Angular實現資料繫結的方式是把model作為資料來源,view始終是model的投影,當model發生變化時,會自動反映在view上
3.依賴注入
Angular的依賴注入是擷取它所需要的東西,而不建立它們所依賴的東西(一句話 ---> 沒事你不要來找我,有事我會去找你。)
4.Angular資料繫結原理:使用髒檢查比較資料是否發生了變化
知道變數發生變化一般有兩種情況
(1)一是通過固定的介面改變值,如set()方法,缺點是寫法繁瑣,每個屬性都要寫一個set方法,
(2)二是髒檢查,將對象複製一份快照,在某個時間比較現在對象與快照的值,如果不一樣就說明發生了變化,這個策略要保留兩份,而且要遍曆對象,比較每一個屬性,比較消耗效能。angular中所有帶ng-開頭的事件執行後,都會觸發髒檢查
頁面動態顯示時間例子
demo_01.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div ng-app> <div ng-controller="firstController"> <div ng-bind="date"></div> </div> </div> <script type="text/javascript" src="../common/angular/angularjs.js"></script> <script type="text/javascript" src="demo_01.js"></script></body></html>
demo_01.js
/** * Created by Administrator on 2017/7/21. */var firstController = function($scope){ //new 一個時間 $scope.date = new Date(); //每隔一秒執行一次 setInterval(function () { //通過 $apply 方法進行髒檢查,從而動態改變頁面資料 $scope.$apply(function () { $scope.date = new Date(); }); },1000);}
$apply() 說明:
$apply()只是進入angular的上下文中,通過 $digest() 方法去觸發髒檢查,在調用 $digest() 方法時,angular會先執行angular的 $eval() 方法,如果 $eval() 解析失敗會拋異常,所以不建議直接調用 $digest() 方法,而應該使用 $apply() 方法,先讓 $eval() 方法進行校正,資料合法了再執行下文, $apply() 如果不給參數,會檢查$scope裡所有監聽的屬性,推薦給上
$digest() 說明:
所有 $scope 和 $scope的子類會進行髒檢查,髒檢查又會觸發 $watch() 方法,這樣實現了資料的雙向繫結
$watch() 說明:
angularJs內部的wath實現了頁面隨model的變化而變化,在 $digest() 方法執行時,如果 watch 觀察的 value 與上次執行不一樣時,就會被觸發
AngularJS入門