最新的Web開發教程
 

AngularJS指令


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>
試一試»

您可以通過使用調用指令:

  • 元素名稱
  • 屬性
  • 評論

下面的例子都將產生同樣的結果:

元素名稱

<w3-test-directive></w3-test-directive>
試一試»

屬性

<div w3-test-directive></div>
試一試»

<div class="w3-test-directive"></div>
試一試»

評論

<!-- directive: w3-test-directive -->
試一試»

限制

您可以限制指令僅通過一些方法來調用。

通過增加一個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 ,即元素名稱和屬性名可以調用指令。