您好,登錄后才能下訂單哦!
AngularJS 最初由 Misko Hevery 和 Adam Abrons 于 2009 年開發,后來成為了
Google 公司的項目。 AngularJS 彌補了 HTML 在構建應用方面的不足, 其通過使用標識
符( directives)結構,來擴展 Web 應用中的 HTML 詞匯,使開發者可以使用 HTML 來聲
明動態內容,從而使得 Web 開發和測試工作變得更加容易。
Misko Hevery
Angularjs 版本簡介
https://github.com/angular/angular.js/releases/
AngularJS 功能:
AngularJS 是專門為應用程序設計的 HTML。
AngularJS 使得開發現代的單一頁面應用程序( SPAs: Single Page Applications)變得更加容易。
1 AngularJS 把應用程序數據綁定到 HTML 元素。
2 AngularJS 可以克隆和重復 HTML 元素。
3 AngularJS 可以隱藏和顯示 HTML 元素。
4 AngularJS 可以在 HTML 元素"背后"添加代碼。
5 AngularJS 支持輸入驗證
Angularjs 號稱 下一代 web 應用 主要特性如下:
1.MVC
2.模塊化與依賴注入
3.雙向數據綁定
4.指令與 UI 控件
Angularjs 資源:
http://Angularjs.org 官方網站正常打不開 但是打不開 大家都懂的
http://www.angularjs.cn/
http://docs.angularjs.cn/api
http://www.ngnice.com/
https://github.com/angular
Angularjs 下載:
http://www.bootcdn.cn/angular.js/
通過 nodejs 下載: npm install angular
為了使用 Angular,所有應用都必須首先做兩件事情
1. 下載加載 angular.js 庫
2. 使用 ng-app 指令告訴 angular 應該管理 DOM 中的哪一些部分
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script type="text/javascript" src="angular-1.3.0.js"></script>
</head>
<body>
<div ng-app="">
<p>在輸入框中嘗試輸入: </p>
<p>姓名: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
</body>
</html>
Angularjs 中常用名詞 也就是所說的常用指令
HTML5 允許擴展的(自制的)屬性,以 data- 開頭。
AngularJS 屬性以 ng- 開頭,但是您可以使用 data-ng- 來讓網頁對 HTML5 有效
俗話說 下面的指令可以在開頭加上 data- 例如 ng_app 等同于 data _ng_app
1. ng_app ng_bind ng_model {{}}案例演示
ng_app:
ng-app 指令定義了 AngularJS 應用程序的 根元素。
ng-app 指令在網頁加載完畢時會自動引導(自動初始化)應用程序。
稍后您將學習到 ng-app 如何通過一個值(比如 ng-app="myModule")連接到代碼模塊。
ng-model 指令:
ng-model 指令 綁定 HTML 元素 到應用程序數據。
ng-model 指令也可以:
為應用程序數據提供類型驗證( number、 email、 required)。
為應用程序數據提供狀態( invalid、 dirty、 touched、 error)。
為 HTML 元素提供 CSS 類。
綁定 HTML 元素到 HTML 表單。
ng_bind 指令 等同于{{}}
綁定 HTML 元素到應用程序數據.
示例 1:
<!DOCTYPE html>
<html>
<body>
<div ng-app="">
<p>在輸入框中嘗試輸入: </p>
<p>姓名: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
<script src="angular.min.js"></script>
</body>
</html>
示例 2: {{}}等同于 ng_bind
<!DOCTYPE html>
<html>
<body>
<div ng-app="">
<p>在輸入框中嘗試輸入: </p>
<p>姓名: <input type="text" ng-model="name"></p>
<p>{{name}}</p>
</div>
<script src="angular.min.js"></script>
</body>
</html>
實例講解:
當網頁加載完畢, AngularJS 自動開啟。
ng-app 指令告訴 AngularJS, <div> 元素是 AngularJS 應用程序 的"所有者"。
ng-model 指令把輸入域的值綁定到應用程序變量 name。
ng-bind 指令把應用程序變量 name 綁定到某個段落的 innerHTML。
2. ng_init
ng-init 指令
ng-init 指令為 AngularJS 應用程序定義了 初始值。
通常情況下,不使用 ng-init。您將使用一個控制器或模塊來代替它。
稍后您將學習更多有關控制器和模塊的知識。
<div ng-app="" ng-init="firstName='John'">
<p>姓名為 <span ng-bind="firstName"></span></p>
</div>
3.data-指令 data-ng-init 與 ng-init 等價
<div data-ng-app="" data-ng-init="firstName='John'">
<p>姓名為 <span data-ng-bind="firstName"></span></p>
</div>
6. Angularjs 表達式
AngularJS 表達式寫在雙大括號內: ` expression `。
AngularJS 表達式把數據綁定到 HTML,這與 ng-bind 指令有異曲同工之妙。
AngularJS 將在表達式書寫的位置"輸出"數據。
AngularJS 表達式 很像 JavaScript 表達式:它們可以包含文字、運算符和變量。
實例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}
<!DOCTYPE html>
<html>
<body>
<div ng-app="">
<p>我的第一個表達式: {{ 5 + 5 }}</p>
</div>
<script src="angular.min.js"></script>
</body>
</html>
AngularJS 數字
<div ng-app="" ng-init="quantity=1;cost=5">
<p>總價: {{ quantity * cost }}</p>
</div>
AngularJS 字符串
<div ng-app="" ng-init="firstName='John';lastName='Doe'">
<p>姓名: {{ firstName + " " + lastName }}</p>
</div>
AngularJS 對象
<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">
<p>姓為 ` person`.`lastName `</p>
</div>
AngularJS 數組
<div ng-app="" ng-init="points=[1,15,19,2,40]">
<p>第三個值為 {{ points[2] }}</p>
</div>
7. Angularjs 控制器
AngularJS 控制器 控制 AngularJS 應用程序的數據。
AngularJS 控制器是常規的 JavaScript 對象。
AngularJS 應用程序被控制器控制。
ng-controller 指令定義了應用程序控制器。
控制器是 JavaScript 對象,由標準的 JavaScript 對象的構造函數 創建。
控制器的 $scope 是控制器所指向的應用程序 HTML 元素。
angular 中$scope 是連接 controllers(控制器)和 templates(模板 view/視圖)的主要膠合體。
我們可以把我們的 model 存放在 scope 上,來達到雙向你綁定。
<!DOCTYPE html>
<html>
<body>
<div ng-app="">
<div ng-controller="personController">
名: <input type="text" ng-model="person.firstName"><br>
姓: <input type="text" ng-model="person.lastName"><br>
<br>
姓名: {{person.firstName + " " + person.lastName}}
</div>
</div>
<script>
function personController($scope) { //不建議這樣寫
$scope.person = {
firstName: "John",
lastName: "Doe"
};
}
</script>
<script src="angular.min.js"></script>
</body>
</html>
實例講解:
AngularJS 應用程序由 ng-app 定義。應用程序在 <div> 內運行。
ng-controller 指令把控制器命名為 object。
函數 personController 是一個標準的 JavaScript 對象的構造函數。
控制器對象有一個屬性: $scope.person。
person 對象有兩個屬性: firstName 和 lastName。
ng-model 指令綁定輸入域到控制器的屬性( firstName 和 lastName)。
<!DOCTYPE html>
<html>
<body>
<div ng-app="" ng-controller="personController">
名: <input type="text" ng-model="person.firstName"><br>
姓: <input type="text" ng-model="person.lastName"><br>
<br>
姓名: {{person.fullName()}}
</div>
<script>
function personController($scope) {
$scope.person = {
firstName: "John",
lastName: "Doe",
fullName: function() {
var x = $scope.person;
return x.firstName + " " + x.lastName;
}
};
}
</script>
<script src="angular.min.js"></script>
</body>
</html>
ng-repeat 指令結合 ng-controller
<div ng-app="" ng-controller="namesController">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
<script src="namesController.js"></script>
<script>
function namesController($scope) {
$scope.names = [
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}
];
}
</script>
8. Angularjs $http 請求數據
1. get 請求
<div ng-app="" ng-controller="customersController">
<ul>
<li ng-repeat="x in names">
{{ x.Name + ', ' + x.Country }}
</li>
</ul>
</div>
<script>
function customersController($scope,$http) {
$http.get("http://www.w3cschool.cc/try/angularjs/data/Customers_JSON.php")
.success(function(response) {$scope.names = response;});
}
</script>
$http get 實例 1:
$http.get("http://www.w3cschool.cc/try/angularjs/data/Customers_JSON.php").success(function
(response) {$scope.names = response;});
$http get 實例 2:
$http.get(url,{params:{id:'5'}}) .success(function(response) {
$scope.names = response;
}).error(function(data){
//錯誤代碼
});
$http post 實例:
var postData={text:'這是 post 的內容'};
var config={params:{id:'5'}}
$http.post(url,postData,config) .success(function(response) {
$scope.names = response;
}).error(function(data){
//錯誤代碼
});
$http Jsonp 實例:
myUrl =
"http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1&callback=JSON_
CALLBACK";
$http.jsonp(myUrl).success(
function(data){
$scope.portalcate = data.result;
}
).error(function(){
alert('shibai');
});
9. Angularjs 過濾器
AngularJS 過濾器
AngularJS 過濾器可用于轉換數據:
過濾器 描述
currency 格式化數字為貨幣格式。
filter 從數組項中選擇一個子集。
lowercase 格式化字符串為小寫。
orderBy 根據某個表達式排列數組。
uppercase 格式化字符串為大寫。
向表達式添加過濾器
過濾器可以通過一個管道字符( |)和一個過濾器添加到表達式中。
(下面的兩個實例,我們將使用前面章節中提到的 person 控制器)
uppercase 過濾器格式化字符串為大寫:
<div ng-app="" ng-controller="personController">
<p>姓名為 {{ person.lastName | uppercase }}</p>
</div>
lowercase 過濾器格式化字符串為小寫:
<div ng-app="" ng-controller="personController"">
<p>姓名為 {{ person.lastName | lowercase }}</p>
</div>
currency 過濾器
currency 過濾器格式化數字為貨幣格式:
<div ng-app="" ng-controller="costController">
數量: <input type="number" ng-model="quantity">
價格: <input type="number" ng-model="price">
<p>總價 = {{ (quantity * price) | currency }}</p>
</div>
向指令添加過濾器
過濾器可以通過一個管道字符( |)和一個過濾器添加到指令中。
orderBy 過濾器根據某個表達式排列數組:
<div ng-app="" ng-controller="namesController">
<p>循環對象: </p>
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
<div>
過濾輸入
輸入過濾器可以通過一個管道字符( |)和一個過濾器添加到指令中,該過濾器后跟一個冒
號和一個模型名稱。
filter 過濾器從數組中選擇一個子集:
<div ng-app="" ng-controller="namesController">
<p>輸入過濾: </p>
<p><input type="text" ng-model="name"></p>
<ul>
<li ng-repeat="x in names | filter:name | orderBy:'country'">
{{ (x.name | uppercase) + ', ' + x.country }}
</li>
</ul>
</div>
10.Angularjs 模塊
1. 為什么要使用模塊
控制器污染了全局命名空間
http://baike.baidu.com/view/4174721.htm
本教程中,截至目前為止的所有實例都使用了全局函數。
在所有的應用程序中,都應該盡量避免使用全局變量和全局函數。
全局值(變量或函數)可被其他腳本重寫或破壞。