AngularJS讓您與所謂的新指令延伸屬性HTML。
AngularJS有一組內置的指令它提供的功能,您的應用程序。
AngularJS,您還可以定義自己的指令。
AngularJS指令
AngularJS指令擴展HTML與前綴屬性ng-
。
在ng-app
指令初始化一個AngularJS應用。
在ng-init
指令初始化應用程序數據。
在ng-model
指令結合HTML控件的應用程序的數據值(輸入,選擇,文本區域)。
閱讀在我們所有的AngularJS指令AngularJS指令引用 。
例
<div ng-app="" ng-init="firstName='John'">
<p>Name: <input type="text" ng-model="firstName"></p>
<p>You wrote: {{ firstName }}</p>
</div>
試一試» 在ng-app
指令還告訴AngularJS的<div>元素是在AngularJS應用程序的“所有者”。
數據綁定
所述{{ firstName }}
表達,在上述的例子中,是一個AngularJS數據綁定表達式。
數據AngularJS綁定綁定與AngularJS數據AngularJS表達式。
{{ firstName }}
綁定了ng-model="firstName"
。
在下面的例子中兩個文本字段與兩個納克模型指令一起捆綁。
例
<div ng-app="" ng-init="quantity=1;price=5">
Quantity: <input type="number" ng-model="quantity">
Costs: <input type="number" ng-model="price">
Total in dollar: {{ quantity * price }}
</div>
試一試» 採用ng-init 是不是很常見。 您將學習如何對控制器的章節中初始化數據。 |
重複HTML元素
在ng-repeat
指令重複的HTML元素:
例
<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
試一試» 在ng-repeat
指令實際上是一個集合中的每一項克隆HTML元素的一次。
在ng-repeat
對象的數組上使用的指令:
例
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
試一試» AngularJS是完美的數據庫CRUD(創建,讀取,更新,刪除)應用程序。 試想一下,如果這些對象是從數據庫中記錄。 |
在NG-應用指令
在ng-app
指令定義的AngularJS應用程序的根元素 。
在ng-app
指令時會加載一個網頁的自動引導 (自動初始化)應用程序。
在NG-初始化指令
在ng-init
指令為AngularJS應用程序定義的初始值 。
通常情況下,你不會用NG-初始化。 您將使用一個控制器或模塊來代替。
您將了解更多關於控制器和模塊版本。
在NG-模型指令
在ng-model
指令結合HTML控件的應用程序的數據值(輸入,選擇,文本區域)。
在ng-model
指令還可以:
- 提供應用數據(號碼,電子郵件,必需)類型驗證。
- 為應用程序提供數據狀態(無效,臟,感動,錯誤)。
- HTML元素提供CSS類。
- 綁定HTML元素HTML表單。
了解更多關於ng-model
在下一章指令。
創建新指令
除了所有內置AngularJS指令,你可以創建自己的指令。
新指令是通過使用所創建的.directive
功能。
要調用新指令,使具有相同標記的名稱作為新指令的HTML元素。
在命名指令,則必須使用駱駝案例名稱, w3TestDirective
,但是調用它的時候,你必須使用-
分隔的名稱, w3-test-directive
:
例
<body ng-app="myApp">
<w3-test-directive></w3-test-directive>
<script>
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
template : "<h1>Made by a directive!</h1>"
};
});
</script>
</body>
試一試» 您可以通過使用調用指令:
- 元素名稱
- 屬性
- 類
- 評論
下面的例子都將產生同樣的結果:
限制
您可以限制指令僅通過一些方法來調用。
例
通過增加一個restrict
屬性與價值"A"
該指令只能通過調用屬性:
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
restrict : "A",
template : "<h1>Made by a directive!</h1>"
};
});
試一試» 法律限制值:
-
E
的元素名稱 -
A
對屬性 -
C
類 -
M
的評論
默認值是EA
,即元素名稱和屬性名可以調用指令。