2014年4月4日 星期五

MVC & AngularJS的運用基礎 Part 1 概念運用

在談論AngularJS這套Framework之前,必須要來了解一下它的原型JavaScript。JavaScript,一種直譯式程式語言,是一種動態型別、弱型別、基於原型的語言,內建支援型別。它的直譯器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML網頁上使用,用來給HTML網頁增加動態功能。然而現在JavaScript也可被用於網路伺服器,如Node.js。

近幾年 Javascript 火速的串紅起來,每個網站使用 Javascript 的比例也越來越高,而也發展出許多套件或是框架,例如:jQuery、coffeeScript、ExtJS、KnockoutJS … 等,各有各的特色,而 AngularJS是屬於一種 MVC 框架,對於開發ASP.NET MVC 來說是最適合不過。而 AngularJS 的優點為宣告式語法 (Directives)、雙向資料繫結 (Two Way Data-Binding)、相依性注入 (Dependency Injection) 以及關注點分離等特性。

AngularJS是一款開源 JavaScript函式庫,由Google維護,用來協助單一頁面應用程式運行的。它的目標是透過MVC模式 (MVC) 功能增強基於瀏覽器的應用,使開發和測試變得更加容易。
函式庫讀取包含附加自定義(標籤屬性)的HTML, 遵從這些自定義屬性中的指令,並將頁面中的輸入或輸出與由JavaScript變量表示的模型綁定起來。這些JavaScript變量的值可以手工設置,或者從靜態或動態JSON資源中獲取。

程式的結構上,當要必須載入AngularJS的Lib,到AngularJS.org上下載Lib。然後載入的方式跟一般的js方法一樣。

在 AngularJS 中如果要設置變數的話,會將值利用其表示格式 {{ 與 }} 包起來,例如:
{{ Hello World }}

在 JS Bin 的 <body> 區塊內輸入:
{{1}}
<br>
{{1 + 1}}
<br>
{{ 3 * 1 }}
<br>
{{'hello world'}}
<br>
{{'hi' + ' My World'}}

<html ng-app>
<script type="text/javascript" src="~/Scripts/angular.min.js"></script>
</html>

在 AngularJS 中秉持著 MVC 的設計模式,所有在 Controller 和 View 之間都是透過 Model 定義的資料做資料傳遞,而簡單來說雙向資料繫結就是不管我們今天是在 Controller 或是 View 修改了 Model 的內容,兩邊都會即時且同時發生變化,並馬上反映到 View 上。

在下列範例中的 select 利用 ng-model 屬性宣告成 Model,並且利用 ng-init 來設定 Model 的預設值,要在 <option> 加上 selected="selected" 的屬性來改變其預設值,會發現並不會正確的選取,這是因為目前這個 select 物件已經受到 Angular 所控制,等同於被他綁架的意思 ...,而透過 Model 的繫結則可馬上反應到畫面上。

<select ng-model="week" ng-init="week = ''">
  <option></option>
  <option></option>
  <option></option>
  <option></option>
  <option></option>
  <option></option>
  <option></option>
</select>
今天星期 {{ week }}

程式的基本結構上,AngularJS是非常容易撰寫,下列是填寫表單的基礎運用,只要簡單的幾行程式碼,就可以有驚奇的連動效果:
單價:<input type="text" ng-model="price" ng-init="price = 10"/>
<br>
數量:<input type="text" ng-model="pqrt" ng-init="pqrt = 2"/>
<br>
總價:{{ price * pqrt | currency }}


-雲遊山水為知已逍遙一生而忘齡- 電腦神手