为什么在创建指令时,它仅限于默认属性。为了创建由元素或类名触发的指令,我们需要使用restrict选项?
restrict选项通常设置为:
这些限制可以根据需要合并:
只有这些限制可用于angularjs?或者,是否有其他限制?
答案 0 :(得分:7)
默认情况下,AngularJS期望我们将自定义指令声明为属性,这意味着restrict
选项设置为A
。
可用选项包括:
E
= 元素
<new-directive></new-directive>
A
= 属性 (默认)
<div new-directive="expr"></div>
C
= 类
<div class="new-directive: expr;"></div>
M
= 评论
<!-- directive: new-directive expr -->
它们当然可以组合使用:
{ restrict: 'EC' } // Element or class
属性是默认属性,因为它们将真正适用于跨浏览器,包括较旧的IE,而无需在文档中注册新标记。
我被告知,我建议不要使用注释限制来声明指令,因为它们要跨越多个元素,但在较新的版本中有像ng-repeat-end等钩子。
答案 1 :(得分:0)
restrict
EACM子集的字符串,用于将指令限制为特定的指令声明样式。如果省略,则使用默认值(仅限属性)。
E
- 元素名称:<my-directive></my-directive>
A
- 属性(默认):<div my-directive="exp"></div>
C
- 上课:<div class="my-directive: exp;"></div>
M
- 评论:<!-- directive: my-directive exp -->