angular.js介紹

1.什麼是Angular.js?

Angular.js官方文檔給出的定義:完全使用JavaScript編寫的客戶端技術。同其他歷史悠久的Web技術(HTML、CSS和JavaScript)配合使用,使Web應用開發比以往更簡單、更快捷。AngularJS使開發Web應用變得非常簡單,同時也降低了構建複雜應用的難度。它提供了開發者在現代Web應用中經常要用到的一系列高級功能,例如:解耦應用邏輯、數據模型和視圖;——Ajax服務;——依賴注入;——瀏覽歷史(使書籤和前進、後退按鈕能夠像在普通Web應用中一樣工作);——測試;——更多功能。

2.一個簡單的例子:hello world

<!DOCTYPE html>
<html ng-app>
<head>  
<title>Simple app</title>  
<script    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.js"></script>
</head>
<body>  
<input ng-model="name" type="text" placeholder="Your name">  
<h1>Hello {{ name }}</h1>
</body>
</html>


這個例子展示了angular.js最基本的功能:數據綁定。

使用angular.js的方式:在HTML頁面中引用angular.js,並在某個DOM元素上明確設置ng-app屬性即可。ng-app屬性聲明所有被其包含的內容都屬於這個AngularJS應用,這也是我們可以在Web應用中嵌套AngularJS應用的原因。只有被具有ng-app屬性的DOM元素包含的元素纔會受Angu-larJS影響。

數據模型對象(model object)是指$scope對象。$scope對象是一個簡單的JavaScript對象,其中的屬性可以被視圖訪問,也可以同控制器進行交互。

雙向數據綁定(bi-directional)意味着如果視圖改變了某個值,數據模型會通過髒檢查觀察到這個變化,而如果數據模型改變了某個值,視圖也會依據變化重新渲染。

在輸入字段上使用ng-model指令來實現數據綁定。

如下所示:

<input ng-model="person.name" type="text" placeholder="Yourname">
<h1>Hello{{ person.name }}</h1>

這樣綁定就設置好了。我們可以觀察一下視圖是如何更新數據模型的。當輸入字段中的值發生變化時,person.name會被更新,而視圖將反映出這個更新。我們僅通過視圖就實現了一個雙向數據綁定。

正如ng-app聲明所有被它包含的元素都屬於AngularJS應用一樣,DOM元素上的ng-controller聲明所有被它包含的元素都屬於某個控制器。爲了解釋這個概念,我們將前面的例子修改成如下的樣子:

<div ng-controller='MyController'>    
<input ng-model="person.name" type="text" placeholder="Your name">    
<h1>Hello {{ person.name }}</h1>
</div>

3.一個稍微複雜一點的例子

我們創建一個每秒鐘走一步的時鐘(時鐘通常都是這樣的),並更新clock變量上的數據:在這個例子中,MyController函數接受兩個參數,即該DOM元素的$scope和$timeout。

<!doctype html>
<html ng-app>
  <head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
  </head>
  <body>
    <div ng-controller="MyController">
      <h1>Hello {{ clock }}!</h1>
    </div>
    <script type="text/javascript">
      function MyController($scope) {
        $scope.clock = new Date();
        var updateClock = function() {
          $scope.clock = new Date();
        };
        setInterval(function() {
          $scope.$apply(updateClock);
        }, 1000);
        updateClock();
      };
    </script>
  </body>
</html>
實現js代碼的分離:
儘管我們可以將所有代碼都寫在一個文件中,但由於需要將不同的組件分開開發,將代碼寫在一個文件中會使協同工作變得非常困難。通常情況下,更好的選擇是將JavaScript放在單獨的文件中,而不是index.html中。我們將script部分放入一個叫app.js中。由於JavaScript自身的特點,以及它在傳遞值和引用時的不同處理方式,通常認爲,在視圖中通過對象的屬性而非對象本身來進行引用綁定,是Angular中的最佳實踐。如果把這個最佳實踐應用到上面時鐘的例子中,需要把視圖中的代碼改寫成下面這樣:

<h1>Hello {{ clock.now }}!</h1>
在app.js中:

function MyController($scope, $timeout) {    
	var updateClock = function() {        
		$scope.clock = {            
			now: new Date()        
		};        
		$timeout(function() {          
			updateClock();        
		}, 1000);    
	};    
	updateClock();
};

將所有綁定都通過這樣的形式放在視圖中,是個非常好的主意。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章