Pracuję w małym zespole, buduję w AngularJS i staram się utrzymać kilka podstawowych standardów i najlepszych praktyk; zwłaszcza biorąc pod uwagę, że jesteśmy stosunkowo nowi w Angular.
Moje pytanie dotyczy dyrektyw. Dokładniej, restrict
opcje.
Niektórzy z nas używają restrict: 'E'
tego <my-directive></my-directive>
w html.
Inni używają restrict: 'A'
i mają <div my-directive></div>
w html.
Następnie możesz oczywiście restrict: 'EA'
użyć dowolnego z powyższych.
W tej chwili to nic wielkiego, ale kiedy ten projekt jest tak duży, jak będzie, chciałbym, żeby każdy, kto na niego spojrzał, łatwo zrozumiał, co się dzieje.
Czy istnieją wady / zalety atrybutu lub elementu sposobu robienia rzeczy?
Czy są jakieś pułapki, które powinniśmy wiedzieć, wybierając powiedz element zamiast atrybutu?
źródło
Restrykcja służy do definiowania typu dyrektywy i może to być
A
(Atrybut),C
(Klasa),E
(Element) iM
(CoMment), załóżmy, że nazwa dyrektywy toDoc
:źródło
Opcja ograniczenia jest zwykle ustawiona na:
Oto link do dokumentacji .
źródło
Element nie jest obsługiwany w IE8 po wyjęciu z pudełka, musisz trochę popracować, aby IE8 akceptował niestandardowe tagi.
Jedną z zalet używania atrybutu zamiast elementu jest to, że możesz zastosować wiele dyrektyw do tego samego węzła DOM. Jest to szczególnie przydatne w przypadku elementów takich jak kontrolki formularzy, w których można podświetlać, wyłączać lub dodawać etykiety itp. Z dodatkowymi atrybutami bez konieczności zawijania elementu w kilka znaczników.
źródło
Jak wiem, jedną z pułapek jest problem IE z niestandardowymi elementami. Jak cytowano z dokumentów :
źródło
Pułapka:
<my-directive></my-directive>
nie działa w IE8 bez obejścia ( https://docs.angularjs.org/guide/ie )<div data-my-directive="ValueOfTheFirstParameter"></div>
Zamiast tego:
<my-directive my-param="ValueOfTheFirstParameter"></my-directive>
My nie zastosowania niestandardowych elementów HTML, bo jeśli to 2 fakty.
Każdą dyrektywę platformy zewnętrznej można napisać na dwa sposoby:
<my-directive></my-directive>
lub
<div data-my-directive></div>
robi to samo.
źródło
2 problemy z elementami:
Użyj atrybutów.
źródło
replace
atrybutemtrue
?