Angular.js中的指令——易懂全解析
最后更新于:2022-04-01 10:29:08
~~~
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">angular.js中,指令是最基础的也是最重要的工具之一。angular.js指令指的是以ng为前缀的HTML属性。在之前的ng-app、ng-model等,都属于指令。</span>
~~~
angular.js中的基本指令包括如下内容:
1.ng-app/ng-model
ng-app指令用于声明angular,js的作用范围,ng-model用于声明模型。这些在之前都已经进行过详细介绍。
2.ng-init
这个指令用于进行模块的初始化,一个最简单的使用方法是利用这个指令进行数据初始化,代码如下:
~~~
<div ng-app="" ng-init="cost=5">
<p>单价: {{ cost }}</p>
</div>
~~~
上述代码中,利用ng-init初始化了cost变量的值,在之后利用{{}}(angular中的数据绑定方式之一)进行调用。但是这种数据初始化的方式并不推荐。
3.ng-bind
这个指令可以用来进行数据绑定,它的功能就和我们之前提到的{{}}作用相同。在如下代码中,我们不用{{}}方式,而改用ng-bind指令进行数据绑定,代码如下:
~~~
<div ng-app="" ng-init="cost=5">
<p>单价: <span ng-bind= "cost"></span></p>
</div>
~~~
4.ng-repear
ng-repeat指令用于进行反复输出,一般用于对数组的遍历,示例代码如下:
~~~
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<p>循环对象:</p>
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
~~~
这里对names内的所有徐对象进行遍历,并分别按照规定的模板进行输出,类似于php中的foreach语句。x in names表示将names数组中的每一个对象都赋值给x,然后输出,没循环一次进行一次这个操作,直到将数组遍历结束。
以上给出的都是AngularJS中自己预先定义的指令。我们在angular.js中还可以自己进行指令的定义,需要使用directive方法。一个简单的指令定义代码如下:
~~~
var app = angular.module("myApp", []);
app.directive("hello", function() {
return {
template : "<h1>自定义指令!</h1>"//tempate指定该指令渲染的模板
};
});
~~~
上面的代码中我们定义了一个hello指令,template定义了该指令的模板,即我们使用这个指令时,需要在html中呈现出什么样的内容。定义好指令后,就可以像之前一样进行调用了。
上面对指令的调用只给出了作为html属性的调用方式。其实angular.js中提供了四种进行指令调用的方法。它们分别为元素名调用、属性调用、类名调用和注释调用。它们的形式如下(按顺序):
~~~
<runoob-directive>runoob-directive>
~~~
~~~
<div runoob-directive>div>
~~~
~~~
<div class="runoob-directive">div>
~~~
angular中,为了更清楚的表示这四种调用,每个调用都为其设定了一个英文字母的标识,用于在指令定义时限定它们的被调用方式,分别为:
E 只限元素名使用
A 只限属性使用
C 只限类名使用
M 只限注释使用
下面的例子说明了如何在定义指令时使用这些限制:
~~~
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
return {
restrict : "A",
template : "<h1>自定义指令!</h1>"
};
});
~~~
当然,这些标识也可以放在一起使用,默认的restrict为EA,表示可以元素名调用或者属性调用。