angualrjs指令中的名称约定

ses*_*ses 12 angularjs

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

AngularJS:与服务器端验证集成

但是,我决定提出更多问题.

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

<input type="email" ng-model="userEmail" name="userEmail" required unique-email/>
Run Code Online (Sandbox Code Playgroud)

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

app.directive('uniqueEmail', function($http) { ..
Run Code Online (Sandbox Code Playgroud)

为什么?是否以某种方式在名称中命名约定/规则?角度如何知道在哪里看以及如何将它们连接到另一个?

我只是想知道,因为我用<input ... required uniqueEmail它时不起作用.直到我输入"unique-email"

如果我输入相同:

app.directive('unique-email', function($http) {
Run Code Online (Sandbox Code Playgroud)

直到我输入它才会起作用 uniqueEmail

因此,在使用指令和定义它时,没有机会使用一个样式名称.

Dav*_*yon 18

这里:

指令有诸如ngBind之类的骆驼名称.可以通过将驼峰案例名称转换为具有以下特殊字符的蛇案例来调用该指令:, - 或_.可选地,该指令可以以x-或数据为前缀,以使其符合HTML验证器.

所以,是的,它是一个有角度的惯例.


Kay*_*ave 5

标签和属性仅使用小写是html约定(部分原因是HTML5不区分大小写.class =""与ClaSS =""相同).Angular不希望将指令名约束为小写.因此,它允许在Angular中使用大写,然后处理将这些名称转换为html标准蛇案例.

因此,您可以在Angular中获得命名灵活性和可读性,同时保持符合html命名标准.

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