12

这对我有用(服务器端验证示例):

AngularJS:与服务器端验证集成

但是,我决定再问一个问题。

在该示例中,我们使用unique-email指令:

<input type="email" ng-model="userEmail" name="userEmail" required unique-email/>

但是在创建指令时,我们使用uniqueEmail

app.directive('uniqueEmail', function($http) { ..

为什么?它是否与名称中的命名约定/规则有关?角度如何知道在哪里看以及如何将彼此联系起来?

我只是想知道,因为当我使用<input ... required uniqueEmail它时它不起作用。直到我输入“唯一电子邮件”

如果我输入相同:

app.directive('unique-email', function($http) {

在我输入之前它不会工作uniqueEmail

所以在使用指令和定义它时没有机会使用一个样式名称。

4

2 回答 2

19

这里

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

所以,是的,这是一个角度约定。

于 2013-10-21T19:38:51.330 回答
5

html 约定仅对标签和属性使用小写(部分原因是 HTML5 不区分大小写。class="" 与 ClaSS="" 相同)。Angular 不想将指令名称限制为小写。因此,它允许在 Angular 中使用大写字母,然后为您处理将这些名称转换为 html 标准蛇形大小写。

因此,您可以在 Angular 中获得命名灵活性并提高可读性,同时保持与 html 命名标准的兼容。

请注意,如果您只使用小写名称,则不必担心名称转换。当然,这可能会以牺牲 Angular 代码的可读性为代价。

于 2013-10-21T19:52:55.047 回答