2015-11-01 94 views
14

當定義了angularJs指令時,我們必須以'camelCase'語法的形式命名它,但是當我們使用它時,我們必須以'駱駝大小寫'的形式命名它。問題是爲什麼這是必需的?AngularJs指令命名約定

我知道這是爲了避免命名衝突(現在/將來),但是爲什麼我們必須在定義和使用時對它進行不同的命名。我們不能直接用'駱駝'的形式來定義它嗎?

回答

21

爲什麼它很重要有兩個原因。

首先,HTML屬性不區分大小寫,這意味着「someName」和「somename」是相同的屬性。所以最好的風格是使用「kebab-case」符號來分隔屬性名稱中的單詞。這就是爲什麼我們對HTML屬性和標籤名稱使用「attribute-name」語法的原因。

另一方面,在Javascript中,kebab-case名稱不是有效的標識符,所以爲了使用Angular指令等名稱,我們必須使用詳細的bracket notation。但是由於在Javascript世界中,camelCase是命名變量和對象屬性的事實標準,Angular使用normalization (see source)將kebab-case名稱轉換爲camelCase,反之亦然。

+0

非常感謝dfsq。說得通! – Parashuram

+0

現在angularjs master分支是遠離它的那個時候你做的參考。這就是爲什麼現在參考文獻實際上沒有給讀者什麼東西。爲避免出現這種情況,請在不支持master分支的情況下引用存儲庫,但在特定的提交狀態下更好。 –

+0

@ a-bobkov謝謝,更正的鏈接 – dfsq

0

指令必須有駝峯的名稱(例如,fooBarDirective),因爲AngularJS轉換駱駝指令名連字符的情況下。對於實例

<foo-bar-directive> 

< ... foo-bar-directive> 

在HTML中使用(這不區分大小寫)。