Angular指令:我们可以使用' _'而不是' - '用于分离指令中的单词

时间:2013-08-24 23:00:54

标签: angularjs haml

这只是一个关于AngularJS语法的快速问题。请执行以下代码等效,并且可以互换使用吗?

<div ng-class="!!navigation.path ? '' : 'dropdown'"></div>

<div ng_class="!!navigation.path ? '' : 'dropdown'"></div>


这很重要,因为如果我们使用HAML编写Angular模板,我可以这样做:

%div{ng_class: "!!navigation.path ? '' : 'dropdown'"}

而不是:

%div{"ng-class" => "!!navigation.path ? '' : 'dropdown'"}

1 个答案:

答案 0 :(得分:1)

在我的头顶,我会说它们不相同,第二个是无效的。但是,令我惊讶的是,在进行快速测试之后,除ng-app指令外,它们似乎都是有效且有效的。 This jsFiddle说明了这一点。

但是没有记录。 documentation所说的是:

  

(...)需要进行规范化,因为所有这些都在Angular中被视为等效:

<span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">

那就是说,如果你坚持使用文档并选择一种官方格式以保持代码面向未来,我觉得更安全。

更新

我刚刚在Angular docs中找到了以下内容:

  

指令有诸如ngBind之类的骆驼名称。该指令可以   通过将驼峰案例名称翻译成蛇案例来调用   特殊字符:, - 或_。可选地,指令可以是   以x-或数据为前缀,使其符合HTML验证器。这里   是一些可能的指令名称列表:ng:bind,ng-bind,   ng_bind,x-ng-bind和data-ng-bind。

因此,您似乎可以安全地在指令的名称中使用下划线作为单词分隔符 - ng-app除外。