angularjs中有多少种类型的限制

时间:2014-02-27 14:53:43

标签: javascript angularjs angularjs-directive

为什么在创建指令时,它仅限于默认属性。为了创建由元素或类名触发的指令,我们需要使用restrict选项?

restrict选项通常设置为:

  • 'A' - 仅匹配属性名称
  • 'E' - 仅匹配元素名称
  • 'C' - 仅匹配班级名称。

这些限制可以根据需要合并:

  • 'AEC' - 匹配属性或元素或类名。

只有这些限制可用于angularjs?或者,是否有其他限制?

2 个答案:

答案 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)

摘自angular documentation

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 -->