最新的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 ,即元素名称和属性名可以调用指令。