關(guān)聯(lián)目錄索引:
重溫AngularJS(一)-- 表達(dá)式、指令
重溫AngularJS(二)-- 模型ng-model指令
重溫AngularJS(三)-- Scope(作用域)
重溫AngularJS(四)-- 控制器ng-controller
重溫AngularJS(五)-- 過(guò)濾器
重溫AngularJS(六)-- 服務(wù)Service
重溫AngularJS(七)-- Select(選擇框)、表格
重溫AngularJS(八)-- 事件
重溫AngularJS(九)-- 模塊、全局API
重溫AngularJS(十)-- 表單、輸入驗(yàn)證
重溫AngularJS(十一)-- 包含、動(dòng)畫(huà)
重溫AngularJS(十二)-- 依賴注入(5個(gè)核心組件)
重溫AngularJS(十三)-- 路由
作者:Zyao89;轉(zhuǎn)載請(qǐng)保留此行,謝謝;
AngularJS 簡(jiǎn)介
AngularJS 是一個(gè) JavaScript 框架。它可通過(guò) <script> 標(biāo)簽添加到 HTML 頁(yè)面。
AngularJS 通過(guò) [指令] 擴(kuò)展了 HTML,且通過(guò) [表達(dá)式] 綁定數(shù)據(jù)到 HTML。
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
各個(gè) angular.js 版本下載: https://github.com/angular/angular.js/releases
AngularJS 表達(dá)式
AngularJS 表達(dá)式寫(xiě)在雙大括號(hào)內(nèi):{{ expression }}。
AngularJS 表達(dá)式把數(shù)據(jù)綁定到 HTML,這與 ng-bind 指令有異曲同工之妙。
AngularJS 將在表達(dá)式書(shū)寫(xiě)的位置"輸出"數(shù)據(jù)。
AngularJS 表達(dá)式 很像 JavaScript 表達(dá)式:它們可以包含文字、運(yùn)算符和變量。
AngularJS 數(shù)字
<div ng-app="" ng-init="quantity=1;cost=5">
<p>總價(jià): {{ quantity * cost }}</p>
</div>
使用 ng-bind
的相同實(shí)例:
<div ng-app="" ng-init="quantity=1;cost=5">
<p>總價(jià): <span ng-bind="quantity * cost"></span></p>
</div>
AngularJS 字符串
<div ng-app="" ng-init="firstName='John';lastName='Doe'">
<p>姓名: {{ firstName + " " + lastName }}</p>
</div>
使用 ng-bind
的相同實(shí)例:
<div ng-app="" ng-init="firstName='John';lastName='Doe'">
<p>姓名: <span ng-bind="firstName + ' ' + lastName"></span></p>
</div>
AngularJS 對(duì)象
<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">
<p>姓為 {{ person.lastName }}</p>
</div>
使用 ng-bind 的相同實(shí)例:
<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">
<p>姓為 <span ng-bind="person.lastName"></span></p>
</div>
AngularJS 數(shù)組
<div ng-app="" ng-init="points=[1,15,19,2,40]">
<p>第三個(gè)值為 {{ points[2] }}</p>
</div>
使用 ng-bind 的相同實(shí)例:
<div ng-app="" ng-init="points=[1,15,19,2,40]">
<p>第三個(gè)值為 <span ng-bind="points[2]"></span></p>
</div>
使用 ng-init 不是很常見(jiàn)。后面將有一個(gè)更好的初始化數(shù)據(jù)的方式。
AngularJS 指令
AngularJS 指令是擴(kuò)展的 HTML 屬性,帶有前綴 ng-。
ng-app
指令初始化一個(gè) AngularJS 應(yīng)用程序。
ng-init
指令初始化應(yīng)用程序數(shù)據(jù)。
ng-model
指令把元素值(比如輸入域的值)綁定到應(yīng)用程序。
更多指令
ng-app
指令告訴 AngularJS,<div> 元素是 AngularJS 應(yīng)用程序 的"所有者"。
一個(gè)網(wǎng)頁(yè)可以包含多個(gè)運(yùn)行在不同元素中的 AngularJS 應(yīng)用程序。
數(shù)據(jù)綁定
兩個(gè)文本域是通過(guò)兩個(gè) ng-model
指令同步的:
<div ng-app="" ng-init="quantity=1;price=5">
<h2>價(jià)格計(jì)算器</h2>
數(shù)量: <input type="number" ng-model="quantity">
價(jià)格: <input type="number" ng-model="price">
<p><b>總價(jià):</b> {{ quantity * price }}</p>
</div>
重復(fù) HTML 元素
ng-repeat
指令會(huì)重復(fù)一個(gè) HTML 元素:
<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
<p>使用 ng-repeat 來(lái)循環(huán)數(shù)組</p>
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
ng-repeat
指令用在一個(gè)對(duì)象數(shù)組上:
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<p>循環(huán)對(duì)象:</p>
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
ng-app 指令
ng-app
指令定義了 AngularJS 應(yīng)用程序的 根元素。
ng-app
指令在網(wǎng)頁(yè)加載完畢時(shí)會(huì)自動(dòng)引導(dǎo)(自動(dòng)初始化)應(yīng)用程序。
ng-init 指令
ng-init
指令為 AngularJS 應(yīng)用程序定義了 初始值。
通常情況下,不使用 ng-init
。您將使用一個(gè)控制器或模塊來(lái)代替它。
ng-model 指令
ng-model
指令 綁定 HTML 元素 到應(yīng)用程序數(shù)據(jù)。
ng-model
指令也可以:
- 為應(yīng)用程序數(shù)據(jù)提供類(lèi)型驗(yàn)證(number、email、required)。
- 為應(yīng)用程序數(shù)據(jù)提供狀態(tài)(invalid、dirty、touched、error)。
- 為 HTML 元素提供 CSS 類(lèi)。
- 綁定 HTML 元素到 HTML 表單。
ng-repeat 指令
ng-repeat
指令對(duì)于集合中(數(shù)組中)的每個(gè)項(xiàng)會(huì) 克隆一次 HTML 元素。
創(chuàng)建自定義的指令
除了 AngularJS 內(nèi)置的指令外,我們還可以創(chuàng)建自定義指令。
你可以使用 app.directive
函數(shù)來(lái)添加自定義的指令。
要調(diào)用自定義指令,HTML 元素上需要添加自定義指令名。
使用駝峰法來(lái)命名一個(gè)指令, runoobDirective, 但在使用它時(shí)需要以 - 分割, runoob-directive:
<body ng-app="myApp">
<runoob-directive></runoob-directive>
<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
template : "<h1>自定義指令!</h1>"
};
});
</script>
</body>
你可以通過(guò)以下方式來(lái)調(diào)用指令:
- 元素名
<runoob-directive></runoob-directive> - 屬性
<div runoob-directive></div> - 類(lèi)名
<div class="runoob-directive"></div> - 注釋
限制使用
你可以限制你的指令只能通過(guò)特定的方式來(lái)調(diào)用。
通過(guò)添加 restrict
屬性,并設(shè)置只值為 "A"
, 來(lái)設(shè)置指令只能通過(guò)屬性的方式來(lái)調(diào)用:
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
restrict : "A",
template : "<h1>自定義指令!</h1>"
};
});
HTML DOM
AngularJS 為 HTML DOM 元素的屬性提供了綁定應(yīng)用數(shù)據(jù)的指令。
ng-disabled 指令
ng-disabled
指令直接綁定應(yīng)用程序數(shù)據(jù)到 HTML 的 disabled 屬性。
<div ng-app="" ng-init="mySwitch=true">
<p>
<button ng-disabled="mySwitch">點(diǎn)我!</button>
</p>
<p>
<input type="checkbox" ng-model="mySwitch">按鈕
</p>
<p>
{{ mySwitch }}
</p>
</div>
分析:
ng-disabled
指令綁定應(yīng)用程序數(shù)據(jù) "mySwitch" 到 HTML 的 disabled 屬性。
ng-model
指令綁定 "mySwitch" 到 HTML input checkbox 元素的內(nèi)容(value)。
如果 mySwitch 為true, 按鈕將不可用:
<p>
<button disabled>點(diǎn)我!</button>
</p>
如果 mySwitch 為false, 按鈕則可用:
<p>
<button>點(diǎn)我!</button>
</p>
ng-show 指令
ng-show
指令隱藏或顯示一個(gè) HTML 元素。
<div ng-app="">
<p ng-show="true">我是可見(jiàn)的。</p>
<p ng-show="false">我是不可見(jiàn)的。</p>
</div>
ng-show
指令根據(jù) value 的值來(lái)顯示(隱藏)HTML 元素。
你可以使用表達(dá)式來(lái)計(jì)算布爾值( true 或 false):
<div ng-app="" ng-init="hour=13">
<p ng-show="hour > 12">我是可見(jiàn)的。</p>
</div>
ng-hide 指令
ng-hide
指令用于隱藏或顯示 HTML 元素。
<div ng-app="">
<p ng-hide="true">我是不可見(jiàn)的。</p>
<p ng-hide="false">我是可見(jiàn)的。</p>
</div>