清華大佬耗費(fèi)三個(gè)月吐血整理的幾百G的資源,免費(fèi)分享!....>>>
AngularJS 指令
AngularJS 通過(guò)被稱為 指令 的新屬性來(lái)擴(kuò)展 HTML。
AngularJS 通過(guò)內(nèi)置的指令來(lái)為應(yīng)用添加功能。
AngularJS 允許你自定義指令。
AngularJS 指令
AngularJS 指令是擴(kuò)展的 HTML 屬性,帶有前綴 ng-。
ng-app 指令初始化一個(gè) AngularJS 應(yīng)用程序。
ng-init 指令初始化應(yīng)用程序數(shù)據(jù)。
ng-model 指令把元素值(比如輸入域的值)綁定到應(yīng)用程序。
完整的指令內(nèi)容可以參閱 AngularJS 參考手冊(cè)。
AngularJS 實(shí)例
<div ng-app="" ng-init="firstName='John'">? <p>在輸入框中嘗試輸入:</p>
? <p>姓名:<input type="text" ng-model="firstName"></p>
? <p>你輸入的為: {{ firstName }}</p>
</div>
ng-app 指令告訴 AngularJS,<div> 元素是 AngularJS 應(yīng)用程序 的"所有者"。
![]() |
一個(gè)網(wǎng)頁(yè)可以包含多個(gè)運(yùn)行在不同元素中的 AngularJS 應(yīng)用程序。 |
---|
數(shù)據(jù)綁定
上面實(shí)例中的 {{ firstName }} 表達(dá)式是一個(gè) AngularJS 數(shù)據(jù)綁定表達(dá)式。
AngularJS 中的數(shù)據(jù)綁定,同步了 AngularJS 表達(dá)式與 AngularJS 數(shù)據(jù)。
{{ firstName }} 是通過(guò) ng-model="firstName" 進(jìn)行同步。
在下一個(gè)實(shí)例中,兩個(gè)文本域是通過(guò)兩個(gè) ng-model 指令同步的:
AngularJS 實(shí)例
<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>
![]() |
使用 ng-init 不是很常見(jiàn)。您將在控制器一章中學(xué)習(xí)到一個(gè)更好的初始化數(shù)據(jù)的方式。 |
---|
重復(fù) HTML 元素
ng-repeat 指令會(huì)重復(fù)一個(gè) HTML 元素:
AngularJS 實(shí)例
<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ù)組上:
AngularJS 實(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>
![]() |
AngularJS 完美支持?jǐn)?shù)據(jù)庫(kù)的 CRUD(增加Create、讀取Read、更新Update、刪除Delete)應(yīng)用程序。 把實(shí)例中的對(duì)象想象成數(shù)據(jù)庫(kù)中的記錄。 |
---|
ng-app 指令
ng-app 指令定義了 AngularJS 應(yīng)用程序的 根元素。
ng-app 指令在網(wǎng)頁(yè)加載完畢時(shí)會(huì)自動(dòng)引導(dǎo)(自動(dòng)初始化)應(yīng)用程序。
稍后您將學(xué)習(xí)到 ng-app 如何通過(guò)一個(gè)值(比如 ng-app="myModule")連接到代碼模塊。
ng-init 指令
ng-init 指令為 AngularJS 應(yīng)用程序定義了 初始值。
通常情況下,不使用 ng-init。您將使用一個(gè)控制器或模塊來(lái)代替它。
稍后您將學(xué)習(xí)更多有關(guān)控制器和模塊的知識(shí)。
ng-model 指令
ng-model 指令 綁定 HTML 元素 到應(yīng)用程序數(shù)據(jù)。
ng-model 指令也可以:
- 為應(yīng)用程序數(shù)據(jù)提供類型驗(yàn)證(number、email、required)。
- 為應(yīng)用程序數(shù)據(jù)提供狀態(tài)(invalid、dirty、touched、error)。
- 為 HTML 元素提供 CSS 類。
- 綁定 HTML 元素到 HTML 表單。
ng-repeat 指令
ng-repeat 指令對(duì)于集合中(數(shù)組中)的每個(gè)項(xiàng)會(huì) 克隆一次 HTML 元素。
創(chuàng)建自定義的指令
除了 AngularJS 內(nèi)置的指令外,我們還可以創(chuàng)建自定義指令。
你可以使用 .directive 函數(shù)來(lái)添加自定義的指令。
要調(diào)用自定義指令,HTML 元素上需要添加自定義指令名。
使用駝峰法來(lái)命名一個(gè)指令, runoobDirective, 但在使用它時(shí)需要以 - 分割, runoob-directive:
AngularJS 實(shí)例
<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)用指令:
- 元素名
- 屬性
- 類名
- 注釋
以下實(shí)例方式也能輸出同樣結(jié)果:
元素名
<runoob-directive></runoob-directive>屬性
<div runoob-directive></div>類名
<div class="runoob-directive"></div>注釋
<!-- 指令: runoob-directive -->限制使用
你可以限制你的指令只能通過(guò)特定的方式來(lái)調(diào)用。
實(shí)例
通過(guò)添加 restrict 屬性,并設(shè)置只值為 "A"
,
來(lái)設(shè)置指令只能通過(guò)屬性的方式來(lái)調(diào)用:
app.directive("runoobDirective", function() {
return {
restrict : "A",
template : "<h1>自定義指令!</h1>"
};
});
restrict 值可以是以下幾種:
E
作為元素名使用A
作為屬性使用C
作為類名使用M
作為注釋使用
restrict 默認(rèn)值為 EA
, 即可以通過(guò)元素名和屬性名來(lái)調(diào)用指令。
掃碼二維碼 獲取免費(fèi)視頻學(xué)習(xí)資料
- 本文固定鏈接: http://www.wangchenghua.com/j/angularjs/1001288/
- 免費(fèi): Python視頻資料獲取