每當看到前端程序員在腳本、樣式、表單處理邏輯中苦苦掙扎的時候,我就在想,爲何不用Angular Js 呢?html
Angular Js 支持頁面前端的 MVC 模式開發,在 Angular JS 的支持下,咱們能夠將頁面前端處理的數據與頁面展現進行分離,實現優雅的代碼結構。前端
首先,咱們須要到 AngularJs 的官網下載這個腳本庫。程序員
地址:https://angularjs.org/angularjs
不過,這個網站常常被封,你也能夠直接在這裏下載: http://files.cnblogs.com/haogj/AngularJs-1.3.10.zip數組
AngularJs 是一個獨立的腳本庫,許多人詢問是否還須要 jQuery,答案是不須要。你只須要在頁面引用 AngularJs 的腳本文件就能夠了,甚至,AngularJs 還實現了一個精簡版的 jQuery。不過它也能夠和 jQuery 一塊兒使用。app
在 ASP.NET MVC 的頁面視圖中,能夠直接引用,也能夠經過 @section 將腳本放置到佈局 Layout 的 scripts 節中。函數
@section scripts {
<script src="~/Scripts/angular-1.3.10.min.js"></script>
<script>
</script>
}
在 AngularJs 中,每一個頁面被看做一個獨立的 WebApp,每一個 WebApp 中能夠包括多個獨立的處理部分,咱們稱爲 Controller,每一個 Controller 有本身獨立的處理上下文和邏輯。佈局
AngularJs 經過指令 ng-app 來劃定這個 WebApp 的做用域,一般能夠將這個 ng-app 直接寫在 html 標記之上,也能夠寫在一個元素之上,咱們這裏寫在這個視圖中的 div 標記之上。網站
ng-controller 用來劃定 WebApp 中的控制器的做用域,一般,咱們會給它起一個名字。編碼
<div ng-app="myApp"> <div ng-controller="myController"> </div> </div>
下面,在腳本中建立咱們的 WebApp 和控制器。
1 <script src="~/Scripts/angular-1.2.14.min.js"></script> 2 <script> 3 var app = angular.module("myApp", []); 4 5 app.controller("myController", function ($scope, $http) { 6 $scope.message = "Hello, Angular JS."; 7 }); 8 </script>
上面的第三行建立 WebApp,注意第一個參數是應用的名稱,須要與頁面指令中的 WebApp 名稱匹配,第二個參數數組是必須的。
第五行建立了應用中的控制器,特別須要注意的是控制器的匿名函數參數,這兩個參數的名稱不能夠修改,在 AngularJs 中,參數的名稱用來進行依賴注入。
第一個參數 $scope 就是這個控制器的上下文對象,經過它咱們將模型,視圖,和處理邏輯粘合在一塊兒。
在 AngularJs 中,視圖是經過標準的 HTML 實現的。
注意,咱們上面代碼的第 6 行,咱們在上下文對象上保存了一個 message ,這就是咱們的模型,咱們但願這個模型中的數據,能夠在頁面展現出來。
在 Controller 的元素內部,建立一個新的 div 來容納咱們的內容,咱們準備使用 h2 標記將這個 message 的內容顯示出來。
視圖怎樣與咱們的模型綁定在一塊兒呢?各類模板都有本身的綁定語法,AngularJs 的方式是 {{ }}。其中能夠寫一個表達式。
<div ng-app="myApp"> <div ng-controller="myController"> <div> <h2>{{message}}</h2> </div> </div> </div>
如今運行一下程序,你應該已經在頁面看到輸出結果了。
若是咱們須要編輯這個 message 呢?編輯以後如何獲取編輯以後的內容呢?angularjs 支持雙向綁定,也就是說既能夠從咱們的模型獲取數據,若是數據被編輯了,編輯以後的內容也經過能夠被 angularjs 同步到模型上。
雙向綁定其實是 angularjs 內部支持的,咱們並不須要特別的編碼。在這裏咱們添加一個編輯框來支持編輯。
<div ng-app="myApp"> <div ng-controller="myController"> <div> <h2>{{message}}</h2> <input type="text" ng-model="message" /> </div> </div> </div>
注意 input 元素的 ng-model 屬性,它表示咱們須要雙向綁定 message 到這個編輯元素上。
從新運行程序,你看到 message 的內容也同步出如今編輯框中,若是你修改編輯框中的內容,標題中的內容也將會同步變化。你的編輯結果已經同步到了模型上。
angularJs 是一個比較重的腳本庫,雖然內部高度複雜,注意關鍵的使用細節,使用起來其實很是簡單。