2013-08-01 24 views
71

我的代碼:Angular指令名稱:只允許小寫字母?

app.directive('abcabc', function(){ alert('directive');}); // working 

app.directive('abcAbc', function(){ alert('directive');}); // not working ! 
app.directive('abc-abc', function(){ alert('directive');}); // not working ! 

難道我做錯了嗎? 或者Angular指令有特殊的命名規則嗎?

回答

116

AngularJS試圖讓每個人都開心!

有些人喜歡使用的數據屬性,如data-abc-abc,我想保持驗證高興。其他人更喜歡使用名稱空間,如abc:abc,而其他人更喜歡使用實際的指令名稱abcAbc。甚至全部大寫ABC_ABC。或者擴展屬性如x-abc-abc

AngularJS標準化HTML中使用的名稱,試圖涵蓋所有這些情況。 data-x-被剝離,剩餘部分與駝峯:-_作爲單詞邊界。這使得abcAbc來自上面提到的用於查找JavaScript中聲明的指令的情況。

這就是所謂的屬性歸一化(US:屬性歸一化),可以在AngularJS documentationsource code中找到。

+6

謝謝!我把文檔看作是「你可以做到這一點」,但顯然並非如此。我很驚訝,目前爲止只有10個贊助商。 – spikeheap

+0

這也是內嵌Web組件命名空間: http://webcomponents.github.io/articles/web-components-best-practices/ –

+1

我改變了最後一段用的是「正常化」的美國英語形式,而不是英國的「規範化」,因爲Angular文檔使用英文拼寫並在英式拼寫中搜索它們不會返回任何結果。 –

23

您應該在html和camelCase中使用以逗號分隔的名稱作爲指令中的相應名稱。

正如你可以在文檔閱讀:角使用名稱,用破折號屬性名稱和駝峯爲相應的指令名)

這裏:http://docs.angularjs.org/tutorial/step_00

+6

它可能是推薦的方式。但我討厭這一點,因爲在所有文件中搜索相應的指令變得更乏味。特別是對於有多個詞的指令。 – ColacX

0

好,指令名有至少在AngularJS 1.4.9版本中,否則我會得到一個$注入無法找到的錯誤

相關問題