这只是一个关于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'"}
答案 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
除外。