【AngularJS】 Hello AngularJS

『AngularJS』 Hello AngularJS

前端工程獅,最近這個獅群越來越龐大,越來越不容忽視。

 

從最早以前,會寫Javascript就很屌的時代....

 

到Jquery出現...讓你write less do more的時代....

 

現在又到了AngularJS、Knockout等技術的出現....

 

列出以上,只是因為,我只聽過或稍微用過上述的技術,沒列出來的不代表族群不龐大。

 

我畢業後寫程式....真的....連Javascript或Jquery都寫不太好。

 

But,技術就是一個一個學。

 

六月底接到公司主管指派我來認識認識AngularJS,至此之後,我就來一探究竟了。

 

同時,七月底要給同事群上個課認識一下A先生,心中OS:我沒做過這檔事阿!!

 

到今天,透過我的學習過程,大致上已經完成一個AngulaJS 配合 .net MVC3 的CRUD範例

此範例使用此作者寫的.net MVC 對於XML的CRUD範例作為處理我們Service部分,讓我們專注於View的撰寫。

原文網址:http://www.gregjopa.com/2011/04/crud-operations-with-xml-data-in-asp-net-mvc-3/

 

我承認或許不是寫的很對,大家可以一起切磋一下。

 

學技術....第一個一定學Hello World一下阿!!!

 

AngularJS有幾個特點,我列出來我目前可以理解的部分。

 

1.雙向綁定:透過ng-model,讓定義出來的物件可以在View 和 寫的 JS 做及時的綁定(稍後範例可以表達)

2.View、Model、Controller 分工完美,搞的很像寫.net MVC一樣,可以做到分工。

   View:基本上就負責畫面呈現。

   Modle:管理Controller、Directive、Filter、Serivce的模組。

   Controller:基本上大部分的事情都在Controller中處理。

3.宣告式語法(Directives Syntax):除了自訂的也可以自己寫擴充的語法。(But,這塊看了幾個大師寫的文章後,還是有點無法參透)

 

這篇文章我們就先介紹,一個AngularJS基本的寫法吧!!

 

未來所有相關文章都會使用以下:

1.用JS Bin做範例網站。

2.include AngularJS:https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js

3.使用Bootstrap CSS: http://getbootstrap.com/ (這東西目前好像也頗夯、甚至有些求職說這東西是可額外加分的項目,但我也是第一次使用)

 

寫AngularJS基本上除了include  AngularJS,再來最重要的就是加入 ng-app 這個屬性。

ng-app 主要是告訴AngularJS那個區域是他負責的區塊。

所以,在還沒清楚瞭解前,我們宣告整份Html都是AngularJS要處理的區塊,因此改變<html>改變為<html  ng-app>。

 

現在我們做一個跟自己打招呼 & 加法和乘法的範例。


<!doctype html>
<html ng-app>
<head>
	<meta charset="UTF-8">
	<title></title>
	<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js"></script>	
</head>
<body>
	<div class="well span6">
		<label>姓名:</label>
		<input type="text" placeholder="輸入大名" ng-model="Name">
		<hr>
		Hello:<span style="color:blue;font-size:20" > {{Name}}</span>!! Welcome 
		</div>
	<div class="well span6">
		<label>數學教學時間:</label>
		加法:X + Y = ?<br/>
		加法:
			<input type="number" ng-model="X" style="width:100px" placeholder="X"> 
			+ 
			<input type="number" ng-model="Y" style="width:100px" placeholder="Y"> 
			= {{ X+Y }}<br/>	
		乘法:
			<input type="number" ng-model="X" style="width:100px" placeholder="X"> 
			* 
			<input type="number" ng-model="Y" style="width:100px" placeholder="Y"> 
			= {{ X*Y }}

		<br/>為何畫面一開始乘法答案會是null??<a href="http://jsbin.com/jodami/1/edit" target="_blank"> 下回揭曉</a>
	</div>	
</body>
</html>

完整個Code如上。Live  Demo :http://jsbin.com/kowuj/1/edit

 

這個頁面總共做了幾件事情:

  • 宣告了五個Input,同時宣告了3個ng-model :Name、X、Y
  • 輸入Name後,顯示Hello:{{Name}}!!
  • 輸入X、Y後做加法和乘法的結果。

 

AngularJS我想最讓我驚艷的部分是:雙向綁定這個特性。

當我們宣告ng-model後,基本上就已經做了雙向綁定這件事情。

透過{{}}兩個大括弧我們可以在裡面做一般的程式撰寫。(當然,就理念上是不建議在裡面寫太複雜的邏輯概念)

所以,我們宣告了一個input 同時ng-model = "Name"

當使用者輸入則{{ Name }}就做了立即的綁定,同步了結果。

 

這篇就介紹到這裡,希望對各位有所幫助。

 

學習過程的教學資源:

  1. 黑暗執行緒:http://blog.darkthread.net/post-2014-06-11-angularjs-notes-1.aspx
  2. 男丁格爾:http://abgne.tw/category/angularjs/angularjs-getting-stared
  3. 對岸的AngulaJS社群:http://www.angularjs.cn/
  4. 當然還有AngularJS的官網嚕:https://docs.angularjs.org/guide

 

或許我寫的地方有很多錯誤,請大家盡量指教,有任何想法大家也可以一起討論。

截至目前感受到AngularJS帶給我的是:處處驚奇、處處困難。

學習曲線或許真的高....但,我們可以一起做好的!!

 

PS:其實,我已經寫了七篇的教學範例,但還沒著手寫教學文有興趣的可以先看Liev Demo,

用這七篇的技術,已經可以完成一個簡單的CRUD功能,也....應該是介紹完頗實用的技術,

先感受一下AngularJS的強大,再接受他的高學習曲線。

L2 ng-controller的出現:http://jsbin.com/jodami/2/edit

L3 ng-show 、 ng-hide的運用:http://jsbin.com/wuruc/1/edit

L4 ng-switch應用:http://jsbin.com/wepuka/1/edit

L5 ng-repeter & filter 現身:http://jsbin.com/kuqeca/1/edit

L6 ng-option AngularJS界的下拉選單:http://jsbin.com/fefad/1/edit

L7 打造AngularJS界的CheckboxList:http://jsbin.com/jiyohe/1/edit