1

这只是一个关于 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'"}
4

1 回答 1

1

在我的脑海中,我会说它们不相等,第二个是无效的。但是,令我惊讶的是,在进行快速测试之后,除了ng-app指令之外,似乎两者都是有效的和功能性的。这个jsFiddle 说明了它。

但是,这没有记录。文档说的是:

(...) 规范化是必需的,因为所有这些在 Angular 中都被视为等效:

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

也就是说,我认为如果您坚持使用文档并选择一种官方格式以使您的代码面向未来,会更安全。

更新

我刚刚在Angular 文档中发现了以下内容:

指令具有驼峰式名称,例如 ngBind。可以通过使用这些特殊字符 :、- 或 _ 将驼峰式名称转换为蛇形大小写来调用该指令。可选地,该指令可以以 x- 或 data- 为前缀,以使其符合 HTML 验证器。以下是一些可能的指令名称的列表:ng:bind、ng-bind、ng_bind、x-ng-bind 和 data-ng-bind。

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

于 2013-08-25T01:53:35.820 回答