AngularJS 徹底使用javascript 編寫的客戶端技術。經過原生的Model-View-Controller(MVC,模型視圖控制器)功能加強了HTML。這個選擇能夠快捷和愉悅地構建出使人印象深入而且極富表現力的客戶端應用。javascript
AngularJS的源碼託管在GitHub上,能夠免費獲取。html
數據模型對象(model object)是指$scope對象。java
數據綁定:app
例子:時鐘的實現函數
1 <!DOCTYPE html> 2 <html ng-app="myApp"> 3 <head> 4 <meta charset="utf-8" /> 5 <title>tabs control</title> 6 <script type="text/javascript" src="angular.min.js"></script> 7 </head> 8 <body> 9 <div ng-controller="MyController"> 10 <h1>clock:{{clock}}</h1> 11 </div> 12 <script type="text/javascript" src="clock.js"></script> 13 </body> 14 </html>
clock.jsatom
1 (function () { 2 var app = angular.module("myApp", []); 3 app.controller('MyController', function ($scope, $timeout) { 4 var updateClock = function () { 5 $scope.clock = new Date(); 6 $timeout(function () { 7 updateClock(); 8 }, 1000) 9 } 10 updateClock(); 11 }) 12 })();
數據綁定的最佳實踐:spa
因爲JavaScript自身的特色,以及它在傳遞值和引用時的不一樣處理方式,一般認爲,在視圖中
經過對象的屬性而非對象自己來進行引用綁定,是Angular中的最佳實踐。code
修改成:xml
1 <!DOCTYPE html> 2 <html ng-app="myApp"> 3 <head> 4 <meta charset="utf-8" /> 5 <title>tabs control</title> 6 <script type="text/javascript" src="angular.min.js"></script> 7 </head> 8 <body> 9 <div ng-controller="MyController"> 10 <h1>clock:{{clock.now}}</h1> 11 </div> 12 <script type="text/javascript" src="clock.js"></script> 13 </body> 14 </html>
clock.jshtm
1 (function () { 2 var app = angular.module("myApp", []); 3 app.controller('MyController', function ($scope) { 4 $scope.clock = { 5 now: new Date() 6 } 7 var updateClock = function () { 8 $scope.clock.now = new Date(); 9 } 10 setInterval(function () { 11 $scope.$apply(updateClock); 12 }, 1000); 13 updateClock(); 14 }) 15 })();
這裏提到$scope.$apply(),相信你們不知道這個,怎麼用和爲何這麼用,我剛接觸的時候也不明白爲何,而後去查了一下資料,下面大概講解一個這個$scope.$apply()的用法
1.$scope提供$apply方法傳播Model的變化
對於檢查綁定的數據到底有沒有發生變化,其實是由$scope.$digest()完成的,可是咱們幾乎歷來就沒有直接調用過這個方法,而是調用$scope.$apply()方法,由於在$scope.$apply()方法裏面,它會去調用$scope.$digest()方法。$scope.$apply()方法帶一個函數或者一個表達式,而後執行它,最後調用$scope.$digest()方法去更新bindings或者watchers。
2.咱們何時用$apply()
其實咱們全部的代碼都包在$scope.$apply()裏面,像ng−click,controller的初始化,http的回調函數等。在這些狀況下,咱們不須要本身調用,實際上咱們也不能本身調用,不然在apply()方法裏面再調用apply()方法會拋出錯誤。若是咱們須要在一個新的執行序列中運行代碼時才真正須要用到它,並且當且僅當這個新的執行序列不是被angular JS的庫的方法建立的,這個時候咱們須要將代碼用$scope.$apply()包起來。