Comecei a aprender sobre o AngularJS e estou confuso sobre quais são as diferenças entre as diretivas ng-app
e data-ng-app
.
Comecei a aprender sobre o AngularJS e estou confuso sobre quais são as diferenças entre as diretivas ng-app
e data-ng-app
.
Respostas:
A maioria dessas respostas está simplesmente dizendo que torna o modelo válido em HTML ou compatível com o validador de HTML , sem explicar o que esses termos significam.
Não sei ao certo, mas acho que esses termos se aplicam aos programas de validação HTML que examinam seu código quanto à conformidade com os padrões - como fiapos. Eles não reconhecem ng-app
como um atributo válido. Eles esperam que atributos HTML não padrão sejam precedidos por
data-attribute_name_here
.
Portanto, os criadores do site AngularJS
criaram nomes alternativos para suas diretivas, que incluem os que estão data-
na frente deles, para que os programas validadores de HTML "gostem" deles.
Nenhum em termos de comportamento em tempo de execução, esses são apenas estilos diferentes de diretivas de nomenclatura, conforme descrito aqui: http://docs.angularjs.org/guide/directive
As diretivas possuem nomes de camel case, como ngBind. A diretiva pode ser invocada traduzindo o nome da caixa de camelo para caixa de cobra com os seguintes caracteres especiais:, - ou _. Opcionalmente, a diretiva pode ser prefixada com x ou dados para torná-la compatível com o validador HTML. Aqui está uma lista de alguns dos possíveis nomes de diretiva: ng: bind, ng-bind, ng_bind, x-ng-bind e data-ng-bind.
Como você pode ver lendo isso, data-
pode ser usado para fazer seu HTML passar nos testes do validador HTML /
Você pode declarar o espaço para nome angular <html xmlns:ng="http://angularjs.org" ng-app>
Nos navegadores modernos, não há diferença, mas nos IEs mais antigos, eles não funcionarão, a menos que você declare um namespace XML definindo-o.
Também há uma diferença de validação em que ng-app
XHTML não é válido e fará com que sua página da Web falhe nas validações em HTML. Angular permite prefixar suas diretivas com data-
ou x-
para validar.
Você pode usar data-ng-, em vez de ng-, se desejar tornar o HTML da sua página válido.
Isso gerará um erro
<div ng-app="">
<p>Input something in the input box:</p>
<p>Name: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
Isso não gera um erro
<div data-ng-app="scope" data-ng-init="name='test'">
<p>Input something in the input box:</p>
<p>Name: <input type="text" data-ng-model="name"></p>
<p data-ng-bind="name"></p>
</div>
A diferença básica entre esses dois termos é que o aplicativo de dados-ng valida o HTML, enquanto o último não. A funcionalidade permanece a mesma. Para mais referência, você pode tentar o w3Validator.
Absolutamente não há diferença entre os dois, exceto que certos validadores HTML5 lançam um erro em uma propriedade como ng-app, mas eles não lançam um erro para qualquer coisa prefixada com dados, como dados-ng-app. Portanto, é bom usar o prefixo de dados com nossas diretivas angulares.
Mesmo você pode usar diretivas angulares das maneiras mencionadas abaixo ng-bind, ng: bind, ng_bind, data-ng-bind, x-ng-bind