2015-11-01 14 views
14

Po zdefiniowaniu dyrektywy angleSJ, musimy nadać jej nazwę w postaci składni "camelCase", ale kiedy jej używamy, musimy nadać jej nazwę "wielbłąda". Pytanie, dlaczego jest to wymagane?Konwencje nazewnictwa dyrektyw AngularJs

Wiem, że należy unikać konfliktów nazw (teraz/w przyszłości), ale dlaczego musimy nadawać im różne nazwy podczas definiowania i używania. Czy nie możemy zdefiniować go bezpośrednio w formie "przypadku wielbłąda"?

Odpowiedz

21

Istnieją dwa powody, dla których jest to ważne.

Po pierwsze, w atrybutach HTML nie jest rozróżniana wielkość liter, co oznacza, że ​​"someName" i "somename" mają ten sam atrybut. Najlepszym stylem jest użycie notacji "kebab-case" do oddzielenia słów w nazwie atrybutu. Dlatego używamy składni "nazwa-atrybutu" dla atrybutów HTML i nazw znaczników.

Z drugiej strony, nazwy skrzynek kebaba nie są poprawnymi identyfikatorami w JavaScript, więc aby używać takich nazw jak dyrektywy Angular, musielibyśmy użyć verbose bracket notation. Ale ponieważ w świecie Javascript camelCase jest standardowym de facto dla nazywania zmiennych i właściwości obiektu, Angular używa normalization (see source) do konwersji nazw skrzynek kebaba na camelCase i na odwrót.

+0

Wielkie dzięki dfsq. Ma sens! – Parashuram

+0

Odtąd gałąź master angularjs jest daleka od tego, kiedy dokonałeś odniesienia. Dlatego teraz odnośnik właściwie nic nie daje czytelnikowi. Aby tego uniknąć, należy odwoływać się do repozytorium nie w gałęzi głównej, ale lepiej w określonym stanie zatwierdzenia. –

+0

@ a-bobkov dzięki, poprawiony link – dfsq

0

Dyrektywy muszą mieć nazwy przypadków wielbłąda (np fooBarDirective) ponieważ angularjs wielbłąd przekształca nazwy w dyrektywie sprawa do myślnikiem sprawę .Do przykład

<foo-bar-directive> 

lub

< ... foo-bar-directive> 

do stosowania w HTML (które jest niewrażliwy na wielkość liter).