2013-08-01 17 views
71

Mój kod:Nazwa dyrektywy kątowej: dozwolone są tylko małe litery?

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

ale

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

robię źle? Czy istnieją specjalne zasady nazewnictwa dla dyrektywy Angular?

Odpowiedz

116

AngularJS stara się uszczęśliwić wszystkich!

Niektórzy ludzie wolą używać atrybutów danych, takich jak data-abc-abc, zakładam, że walidatory są szczęśliwe. Inne osoby wolą używać przestrzeni nazw, takich jak abc:abc, a inne wolą używać rzeczywistej nazwy dyrektywy abcAbc. Lub nawet wszystkie czapki ABC_ABC. Lub atrybuty rozszerzenia, takie jak x-abc-abc.

AngularJS normalizuje nazwę używaną w HTML, aby spróbować objąć wszystkie te przypadki. data- i x- są usuwane, reszta camelcased z :, - i _ jako granicami słów. To sprawia, że ​​abcAbc z wyżej wymienionych przypadków służy do wyszukiwania dyrektywy zadeklarowanej w JavaScript.

Wszystko to nazywa się normalizacją atrybutów (US: normalizacja atrybutów) i można je znaleźć w AngularJS documentation i source code.

+6

Dziękuję za to! Czytałem dokumentację jako "możesz to zrobić w dowolny sposób", ale tak nie jest. Jestem zaskoczony, że do tej pory ma tylko 10 przegranych. – spikeheap

+0

Jest również wbudowany w składowanie nazw komponentów WWW: http://webcomponents.github.io/articles/web-components-best-practices/ –

+1

Zmieniłem ostatni akapit, aby użyć angielskiej formy angielskiego słowa "normalizacja" zamiast brytyjskiego "normalizacja", ponieważ Angular docs używa angielskiej pisowni i przeszukuje je dla brytyjskiej pisowni, nie zwraca żadnych wyników. –

23

Należy używać nazw oddzielonych przecinkami wewnątrz html i camelCase dla odpowiednich nazw w dyrektywie.

Jak można przeczytać w dokumencie: kątowa używa nazwa-z myślnikami w nazwach atrybutów i CamelCase dla odpowiedniej nazwy dyrektywy)

tutaj: http://docs.angularjs.org/tutorial/step_00

+6

może to być zalecany sposób. ale nienawidzę tego, ponieważ wyszukiwanie odpowiedniej dyrektywy we wszystkich plikach staje się bardziej żmudne. szczególnie w przypadku dyrektyw zawierających wiele słów. – ColacX

0

dobrze, nazwa dyrektywa musi wszystkie są małymi literami, przynajmniej w wersji AngularJS 1.4.9, w przeciwnym razie otrzymam $ inject nie można znaleźć błąd

Powiązane problemy