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