Estou trabalhando em uma pequena equipe, construindo em AngularJS e tentando manter alguns padrões básicos e melhores práticas; especialmente porque somos relativamente novos no Angular.
Minha pergunta é em relação às Diretivas. Mais precisamente, as restrict
opções.
Alguns de nós estão usando restrict: 'E'
assim tendo <my-directive></my-directive>
no html.
Outros estão usando restrict: 'A'
e tendo <div my-directive></div>
no html.
Então, é claro, você pode usar restrict: 'EA'
e usar qualquer um dos itens acima.
No momento não é grande coisa, embora quando este projeto estiver tão grande quanto pode ser, eu gostaria que qualquer pessoa olhando para ele entendesse facilmente o que está acontecendo.
Existem prós / contras no modo de fazer as coisas de atributo ou elemento?
Existem armadilhas que devemos saber, ao escolher dizer elemento em vez de atributo?
fonte
restrito é para definir o tipo de diretiva, e pode ser
A
(Atributo),C
(Classe),E
(Elemento) eM
(coMment), vamos supor que o nome da diretiva sejaDoc
:fonte
A opção de restrição é normalmente definida como:
Aqui está o link da documentação .
fonte
Elemento não é compatível com o IE8 pronto para uso, você precisa fazer algum trabalho para que o IE8 aceite tags personalizadas.
Uma vantagem de usar um atributo em vez de um elemento é que você pode aplicar várias diretivas ao mesmo nó DOM. Isso é particularmente útil para coisas como controles de formulário, onde você pode destacar, desabilitar ou adicionar rótulos, etc. com atributos adicionais, sem ter que envolver o elemento em um monte de tags.
fonte
Uma das armadilhas que eu sei é o problema do IE com elementos personalizados. Conforme citado nos documentos :
fonte
Armadilha:
<my-directive></my-directive>
não funciona no IE8 sem solução alternativa ( https://docs.angularjs.org/guide/ie )<div data-my-directive="ValueOfTheFirstParameter"></div>
Em vez disso:
<my-directive my-param="ValueOfTheFirstParameter"></my-directive>
Nós não usamos elementos html personalizados, porque são dois fatos.
Cada diretiva por estrutura de terceiros pode ser escrita de duas maneiras:
<my-directive></my-directive>
ou
<div data-my-directive></div>
faz o mesmo.
fonte
2 problemas com elementos:
Use atributos.
fonte
replace
atributo paratrue
?