中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

AngularJS 指令

本章節(jié)為你介紹 AngularJS 使用的一些指令。


AngularJS 通過被稱為 指令 的新屬性來擴(kuò)展 HTML。

AngularJS 通過內(nè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 參考手冊

AngularJS 實(shí)例

<div ng-app="" ng-init="firstName='John'"> <p>在輸入框中嘗試輸入:</p> <p>姓名:<input type="text" ng-model="firstName"></p> <p>你輸入的為: {{ firstName }}</p> </div>

運(yùn)行代碼 ?

ng-app 指令告訴 AngularJS,<div> 元素是 AngularJS 應(yīng)用程序 的"所有者"。

數(shù)據(jù)綁定

上面實(shí)例中的 {{ firstName }} 表達(dá)式是一個(gè) AngularJS 數(shù)據(jù)綁定表達(dá)式。

AngularJS 中的數(shù)據(jù)綁定,同步了 AngularJS 表達(dá)式與 AngularJS 數(shù)據(jù)。

{{ firstName }} 是通過 ng-model="firstName" 進(jìn)行同步。

在下一個(gè)實(shí)例中,兩個(gè)文本域是通過兩個(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>

運(yùn)行代碼 ?

Note 使用 ng-init 不是很常見。您將在控制器一章中學(xué)習(xí)到一個(gè)更好的初始化數(shù)據(jù)的方式。

重復(fù) HTML 元素

ng-repeat 指令會重復(fù)一個(gè) HTML 元素:

AngularJS 實(shí)例

<div ng-app="" ng-init="names=['Jani','Hege','Kai']"> <p>使用 ng-repeat 來循環(huán)數(shù)組</p> <ul> <li ng-repeat="x in names"> {{ x }} </li> </ul> </div>

運(yùn)行代碼 ?

ng-repeat 指令用在一個(gè)對象數(shù)組上:

AngularJS 實(shí)例

<div ng-app="" ng-init="names=[ {name:'Jani',country:'Norway'}, {name:'Hege',country:'Sweden'}, {name:'Kai',country:'Denmark'}]"> <p>循環(huán)對象:</p> <ul> <li ng-repeat="x in names"> {{ x.name + ', ' + x.country }} </li> </ul> </div>

運(yùn)行代碼 ?

Note AngularJS 完美支持?jǐn)?shù)據(jù)庫的 CRUD(增加Create、讀取Read、更新Update、刪除Delete)應(yīng)用程序。
把實(shí)例中的對象想象成數(shù)據(jù)庫中的記錄。

ng-app 指令

ng-app 指令定義了 AngularJS 應(yīng)用程序的 根元素。

ng-app 指令在網(wǎng)頁加載完畢時(shí)會自動引導(dǎo)(自動初始化)應(yīng)用程序。

稍后您將學(xué)習(xí)到 ng-app 如何通過一個(gè)值(比如 ng-app="myModule")連接到代碼模塊。


ng-init 指令

ng-init 指令為 AngularJS 應(yīng)用程序定義了 初始值。

通常情況下,不使用 ng-init。您將使用一個(gè)控制器或模塊來代替它。

稍后您將學(xué)習(xí)更多有關(guān)控制器和模塊的知識。


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 指令對于集合中(數(shù)組中)的每個(gè)項(xiàng)會 克隆一次 HTML 元素。


創(chuàng)建自定義的指令

除了 AngularJS 內(nèi)置的指令外,我們還可以創(chuàng)建自定義指令。

你可以使用 .directive 函數(shù)來添加自定義的指令。

要調(diào)用自定義指令,HTML 元素上需要添加自定義指令名。

使用駝峰法來命名一個(gè)指令, jsonDirective, 但在使用它時(shí)需要以 - 分割, json-directive:

AngularJS 實(shí)例

<body ng-app="myApp">

<json-directive></json-directive>

<script>
var app = angular.module("myApp", []);
app.directive("jsonDirective", function() {
??? return {
??????? template : "<h1>自定義指令!</h1>"
??? };
});
</script>

</body>

運(yùn)行代碼 ?

你可以通過以下方式來調(diào)用指令:

  • 元素名
  • 屬性
  • 類名
  • 注釋

以下實(shí)例方式也能輸出同樣結(jié)果:

元素名

<json-directive></json-directive>

運(yùn)行代碼 ?

屬性

<div json-directive></div>

運(yùn)行代碼 ?

類名

<div class="json-directive"></div>

運(yùn)行代碼 ?

注釋

<!-- directive: json-directive -->

運(yùn)行代碼 ?

限制使用

你可以限制你的指令只能通過特定的方式來調(diào)用。

實(shí)例

通過添加 restrict 屬性,并設(shè)置值為 "A", 來設(shè)置指令只能通過屬性的方式來調(diào)用:

var app = angular.module("myApp", []);
app.directive("jsonDirective", function() {
??? return {
??????? restrict : "A",
??????? template : "<h1>自定義指令!</h1>"
??? };
});

運(yùn)行代碼 ?

restrict 值可以是以下幾種:

  • E 作為元素名使用
  • A 作為屬性使用
  • C 作為類名使用
  • M 作為注釋使用

restrict 默認(rèn)值為 EA, 即可以通過元素名和屬性名來調(diào)用指令。