定义angularJs指令时,我们必须以’camelCase’语法的形式对其进行命名,但是当我们使用它时,我们必须以’camel- case’的形式对其进行命名。问题是为什么要这样做?
我知道这是为了避免命名冲突(现在/将来),但是为什么我们在定义和使用时必须使用不同的名称。我们不能直接以“驼峰案例”的形式定义它吗?
它很重要的原因有两个。
首先,HTML属性不区分大小写,这意味着“ someName”和“ somename”是同一属性。因此,最好的样式是使用“ kebab- case”表示法来分隔属性名称中的单词。这就是为什么我们对HTML属性和标记名称使用“属性名称”语法。
另一方面,kebab- case名称在Javascript中不是有效的标识符,因此,为了将此类名称用作Angular指令,我们必须使用冗长的括号符号。但是由于在Javascript世界中,camelCase是用于命名变量和对象属性的标准事实,因此Angular使用规范化(请参阅源代码)将kebab- case名称转换为camelCase,反之亦然。