Ich habe angefangen, etwas über AngularJS zu lernen und bin verwirrt darüber, was die Unterschiede zwischen der ng-app
und der data-ng-app
Direktive sind.
Ich habe angefangen, etwas über AngularJS zu lernen und bin verwirrt darüber, was die Unterschiede zwischen der ng-app
und der data-ng-app
Direktive sind.
Antworten:
Die meisten dieser Antworten besagen lediglich, dass Vorlagen HTML oder HTML Validator kompatibel sind , ohne zu erklären, was DIESE Begriffe bedeuten.
Ich weiß es nicht genau, aber ich vermute, dass diese Begriffe für HTML-Validierungsprogramme gelten, die Ihren Code auf Einhaltung von Standards scannen - ähnlich wie Flusen. Sie erkennen ng-app
kein gültiges Attribut. Sie erwarten, dass nicht standardmäßige HTML-Attribute vorangestellt werden
data-attribute_name_here
.
Daher haben die Ersteller von AngularJS
alternative Namen für ihre Anweisungen erstellt, die die data-
vor ihnen stehenden enthalten, damit HTML-Validierungsprogramme sie "mögen".
Keine in Bezug auf das Laufzeitverhalten, dies sind nur verschiedene Arten von Namensanweisungen, wie hier beschrieben: http://docs.angularjs.org/guide/directive
Direktiven haben Kamelnamen wie ngBind. Die Anweisung kann aufgerufen werden, indem der Name des Kamelfalls in einen Schlangenfall mit den folgenden Sonderzeichen übersetzt wird :, - oder _. Optional kann der Direktive x- oder data- vorangestellt werden, damit sie HTML-validator-kompatibel ist. Hier ist eine Liste einiger möglicher Direktivennamen: ng: bind, ng-bind, ng_bind, x-ng-bind und data-ng-bind.
Wie Sie aus dem Lesen ersehen data-
können, kann dies verwendet werden, um Ihren HTML-Code HTML-Validator-Tests bestehen zu lassen.
Sie können den eckigen Namespace deklarieren <html xmlns:ng="http://angularjs.org" ng-app>
In modernen Browsern gibt es keinen Unterschied, aber in älteren IEs funktionieren sie nur, wenn Sie einen XML-Namespace deklarieren, der ihn definiert.
Es gibt auch einen Validierungsunterschied darin, dass ng-app
XHTML nicht gültig ist und Ihre Webseite die HTML-Validierung nicht besteht. Mit Angular können Sie seinen Anweisungen ein Präfix voranstellen data-
oder x-
eine Validierung zulassen.
Sie können data-ng- anstelle von ng- verwenden, wenn Sie das HTML Ihrer Seite gültig machen möchten.
Dies wird einen Fehler auslösen
<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>
Dies wird keinen Fehler auslösen
<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>
Der grundlegende Unterschied zwischen diesen beiden Begriffen besteht darin, dass data-ng-app den HTML-Code validiert, während letzterer dies nicht tut. Die Funktionalität bleibt gleich. Für weitere Informationen können Sie w3Validator ausprobieren.
Es gibt absolut keinen Unterschied zwischen den beiden, außer dass bestimmte HTML5-Validatoren einen Fehler in einer Eigenschaft wie ng-app auslösen, aber keinen Fehler für etwas auslösen, dem Daten vorangestellt sind, wie z. B. data-ng-app. Die Verwendung des Datenpräfixes mit unseren Winkelanweisungen ist also gut.
Sogar Sie können Winkelanweisungen auf die unten genannten Arten verwenden: ng-bind, ng: bind, ng_bind, data-ng-bind, x-ng-bind