跟我學AngularJs:AngularJs入門及第一個實例


林炳文Evankaka原創作品。轉載請注明出處http://blog.csdn.net/evankaka

         摘要:主要給大家介紹了AngularJs及其特性,並以3個實例來做說明。

本教程使用AngularJs版本:1.5.3

AngularJs GitHub: https://github.com/angular/angular.js/

AngularJs下載地址:https://angularjs.org/

一、AngualrJs簡介

         AngularJS是由谷歌開發出來的,它是為了克服HTML在構建應用上的不足而設計的。HTML是一門很好的為靜態文本展示設計的聲明式語言,但要構建WEB應用的話它就顯得乏力了。通常,我們是通過以下技術來解決靜態網頁技術在構建動態應用上的不足:AngularJS使用了不同的方法,它嘗試去補足HTML本身在構建應用方面的缺陷。AngularJS通過使用我們稱為標識符(directives)的結構,讓瀏覽器能夠識別新的語法。例如:

(1)使用雙大括號{{}}語法進行數據綁定;

(2)使用DOM控制結構來實現迭代或者隱藏DOM片段;

(3)支持表單和表單的驗證;

(4)能將邏輯代碼關聯到相關的DOM元素上;

(5)能將HTML分組成可重用的組件。

         AngularJS可以認為是一個MVC模式的框架Model-View-Controller),其中M代碼scope,V代表Html展示元素,C代表Controller.你也可以將它看成是一個MVVW模式的框架(Model-View-ViewModel),其中其中M代碼scope中的數據,V代表Html展示元素,VW代表scope.AngularJS和Jquery的設計思想完成不同,你不需要去冗長的代碼去控制DOM元素,一些Html上的元素都和scope上的數據進行一個雙向綁定,你只需要更新scope上的數據,Html自動會發生改變。同理,你如果修改html上的數據,如input上的輸入值 ,對就的scope也會接收到你的改變,從而實時更新。當然,這只是它很小一部份的功能,更多的包括指令、路由、服務等,也可以大大加快開發的速度。下面來看看它有哪些特性

二、特性

1、  數據綁定

       數據綁定可能是AngularJS最酷最實用的特性。它能夠幫助你避免書寫大量的初始代碼從而節約開發時間。一個典型的web應用可能包含了80%的代碼用來處理,查詢和監聽DOM。數據綁定使得代碼更少,你可以專注於你的應用。

 


傳統來說,當model變化了。 開發人員需要手動處理DOM元素並且將屬性反映到這些變化中。這個一個雙向的過程。一方面,model變化驅動了DOM中元素變化,另一方面,DOM元素的變化也會影響到Model。這個在用戶互動中更加復雜,因為開發人員需要處理和解析這些互動,然后融合到一個model中,並且更新View。這是一個手動的復雜過程,當一個應用非常龐大的時候,將會是一件非常費勁的事情。

2、模板

在AngularJS中,一個模板就是一個HTML文件。但是HTML的內容擴展了,包含了很多幫助你映射model到view的內容。

HTML模板將會被瀏覽器解析到DOM中。DOM然后成為AngularJS編譯器的輸入。AngularJS將會遍歷DOM模板來生成一些指導,即,directive(指令)。所有的指令都負責針對view來設置數據綁定。

我們要理解AuguarJS並不把模板當做String來操作。輸入AngularJS的是DOM而非string。數據綁定是DOM變化,不是字符串的連接或者innerHTML變化。使用DOM作為輸入,而不是字符串,是AngularJS區別於其它的框架的最大原因。使用DOM允許你擴展指令詞匯並且可以創建你自己的指令,甚至開發可重用的組件。

3、MVC

針對客戶端應用開發AngularJS吸收了傳統的MVC基本原則。MVC或者Model-View-Controll設計模式針對不同的人可能意味不同的東西。AngularJS並不執行傳統意義上的MVC,更接近於MVVM(Model-View-ViewModel)。其中MVC原理圖可以看看下面的圖片。

 


4、依賴注入(Dependency Injection,即DI)

AngularJS擁有內建的依賴注入子系統,可以幫助開發人員更容易的開發,理解和測試應用。

DI允許你請求你的依賴,而不是自己找尋它們。比如,我們需要一個東西,DI負責找創建並且提供給我們。

5、Directives(指令)

指令是我個人最喜歡的特性。你是不是也希望瀏覽器可以做點兒有意思的事情?那么AngularJS可以做到。
指令可以用來創建自定義的標簽。它們可以用來裝飾元素或者操作DOM屬性。

 

三、實例講解

(1)入門實例一

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <!DOCTYPE html>  
  2. <html lang="en" ng-app="">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>AngularJS入門學習</title>  
  6.     <script type="text/javascript"  src="./1.5.3/angular.min.js"></script>  
  7. </head>  
  8. <body>  
  9.     <p><input  type="text" ng-model = "inputValue">請輸入內容</p>  
  10.     <h1>您輸入的內容為:{{inputValue}}</h1>  
  11. </body>  
  12. </html>  


結果:

 

 

注意事項:
文本輸入指令<input ng-model="inputValue" />綁定到一個叫inputValue的模型變量。
雙大括號標記將yourname模型變量添加到問候語文本。
你不需要為該應用另外注冊一個事件偵聽器或添加事件處理程序!

這個頁面非常簡潔,如果用Jquery寫,那么就得設置input框 的chang中事件,然后更新內容。這一過程比AngularJS來得繁瑣多了。

(2)入門實例2

下面現來看一個帶Controller層的:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <!DOCTYPE html>  
  2. <html lang="en" ng-app="myApp">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>AngularJS入門學習</title>  
  6.     <script type="text/javascript"  src="./1.5.3/angular.min.js"></script>  
  7. </head>  
  8. <body ng-controller = "myController">  
  9.     <p><input  type="text" ng-model = "inputValue">請輸入內容</p>  
  10.     <h1>您輸入的內容為:{{inputValue}}</h1>  
  11. </body>  
  12. <script type="text/javascript">  
  13. var app = angular.module('myApp', []);//獲得整個angularJS影響的html元素  
  14. //控制器  
  15. app.controller('myController', function($scope) {  
  16.     $scope.inputValue = "林炳文Evankaka";  
  17. });  
  18. </script>  
  19. </html>  


注意,ng-app="myApp",這個不能少,還有ng-controller=“”也不能少,這兩個分別批明了AngularJS有效的范圍和Controller層有效的范圍。

 

效果如下:

這里因為我們設置了$scope.inputValue = "林炳文Evankaka";,所以一打開頁面,input中就已自動填充 "林炳文Evankaka";

myController——控制器方法的名字和<body>標簽里面的ngController指令的值相匹配。
input的數據此時與注入到我們控制器函數的作用域($scope)相關聯。當應用啟動之后,會有一個根作用域被創建出來,而控制器的作用域是根作用域的一個典型后繼。這個控制器的作用域對所有<body ng-controller="myController">標記內部的數據綁定有效。

(3)入門實例3

接下來使用一個帶有多種ng指令的實例,這時實現的功能是點擊按鈕一下,顯示內容,再點擊一個,隱藏內容

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <!DOCTYPE html>  
  2. <html lang="en" ng-app="myApp">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>AngularJS入門學習</title>  
  6.     <script type="text/javascript"  src="./1.5.3/angular.min.js"></script>  
  7. </head>  
  8. <body ng-controller = "myController">  
  9.     <button ng-click= "myClick()" ></button>  
  10.     <h1 ng-if = "!flag"> 我是林炳文Evankaka</h1>  
  11. </body>  
  12. <script type="text/javascript">  
  13. var app = angular.module('myApp', []);//獲得整個angularJS影響的html元素  
  14. //控制器  
  15. app.controller('myController', function($scope) {  
  16.     $scope.flag = false;  
  17.     $scope.myClick = function(){  
  18.         console.log($scope.flag);  
  19.         $scope.flag  = !$scope.flag ;  
  20.         console.log($scope.flag);  
  21.     }  
  22. });  
  23. </script>  
  24. </html>  

 

 

 

 

參考文章:http://www.apjs.net/

 

 

from: http://blog.csdn.net/evankaka/article/details/51078043


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM