Page 94 - AngularJS权威教程
P. 94
74 第 10 章 指令详解
}
};
});
10.1.1 restrict(字符串)
restrict是一个可选的参数。它告诉AngularJS这个指令在DOM中可以何种形式被声明。默
认AngularJS认为restrict的值是A,即以属性的形式来进行声明。
可选值如下:
E(元素)
<my-directive></my-directive>
A(属性,默认值)
<div my-directive="expression"></div>
C(类名)
<div class="my-directive:expression;"></div>
M(注释)
<--directive:my-directive expression-->
这些选项可以单独使用,也可以混合在一起使用:
angular.module('myDirective', function(){
return {
restrict: 'EA' // 输入元素或属性
};
});
上面的配置可以同时用属性或注释的方式来声明指令:
<-- 作为一个属性 -->
<div my-directive></div>
<-- 或者作为一个元素 -->
<my-directive></my-directive>
属性是用来声明指令最常用的方式,因为它能在包括老版本的IE浏览器在内的所有浏览器中
正常工作,并且不需要在文档头部注册新的标签。更多内容请查看第30章。
尽量避免用注释方式来声明属性。这种方式最初被用来声明由多个标签组成的
指令。这种方法在某些情况下特别有用,比如在<table>元素内使用ng-repeat
指 令,但在 AngularJS 1.2 中 ng-repeat 可以 通过 ng-repeat-start 和
ng-repeat-end来更优雅地满足这个需求,注释模式就没有什么用武之地了。
如果你对此很好奇,可以通过Chrome开发者工具的element标签观察一下使用
ng-repeat时被隐式添加的注释。
元素方式还是属性方式
在页面中通过元素方式创建新的指令可以将一些功能封装在元素内部。例如,如果我们想要