当定义angularJs指令时,我们必须以'camelCase'语法的形式命名它,但是当我们使用它时,我们必须以'camel-case'的形式命名它。问题是为什么需要这个?
我知道这是为了避免命名冲突(现在/将来),但为什么我们必须在定义和使用时对其进行不同的命名。我们不能直接以“驼峰式”的形式定义它吗?
答案 0 :(得分:23)
有两个原因,它很重要。
首先,HTML属性不区分大小写,这意味着" someName"和" somename"是同一个属性。所以最好的风格是使用" kebab-case"用于分隔属性名称中的单词的表示法。这就是我们使用"属性名称" HTML属性和标记名称的语法。
另一方面,kebab-case名称在Javascript中不是有效的标识符,因此为了使用Angular指令这样的名称,我们必须使用详细bracket notation。但是因为在Javascript世界中,camelCase是命名变量和对象属性的标准事实,Angular使用normalization (see source)将kebab-case名称转换为camelCase,反之亦然。
答案 1 :(得分:0)
指令必须具有驼峰案例名称(例如,fooBarDirective),因为AngularJS将驼峰案例指令名称转换为连字符。例如
<foo-bar-directive>
或
< ... foo-bar-directive>
用于HTML(不区分大小写)。