ng-app和data-ng-app有什么不同?

我已经开始了解AngularJS,并且对ng-appdata-ng-app指令之间的差异感到困惑。

这些答案中的大多数只是简单地说让模板有效的HTMLHTML Validator兼容 ,而不解释这些术语的含义。

我不知道,但我猜测,这些条款适用于HTMLvalidation程序,扫描您的代码的标准符合性 – 有点像林特。 他们不认可ng-app作为一个有效的属性。 他们期望非默认的HTML属性是开头的

data-attribute_name_here

所以, AngularJS创build者已经为他们的指令创build了替代名称,包括data-在他们面前,这样HTMLvalidation器程序就会“喜欢”它们。

没有任何运行时行为,这些只是命名指令的不同风格,如下所述: http : //docs.angularjs.org/guide/directive

指令有骆驼的名字,如ngBind。 这个指令可以通过将这个驼名字的名字翻译成具有以下特殊字符的蛇情况来调用: – ,或者_。 可选地,该指令可以用x-或data-作为前缀,以使其符合HTMLvalidation器。 这里列出了一些可能的指令名:ng:bind,ng-bind,ng_bind,x-ng-bind和data-ng-bind。

正如您从阅读中所看到的那样, data-可以用来使您的HTML通过HTMLvalidation器testing/

您可以声明angular色命名空间<html xmlns:ng="http://angularjs.org" ng-app>

在现代浏览器中没有区别,但在较老的IE浏览器中,除非您声明一个定义它的XML名称空间,否则它们将无法工作。

还有一个validation的区别在于ng-app不是有效的XHTML,并且会导致你的网页失败的HTMLvalidation。 Angular允许你在它的指令前加上data-或者x-来允许它进行validation。

如果你想让页面的HTML有效,你可以使用data-ng-而不是ng-。
抛出一个错误

 <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> 

不会抛出一个错误

 <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> 

这两个术语之间的基本区别在于,data-ng-appvalidationHTML,而后者不validation。function保持不变。 为了更多的参考,你可以尝试w3Validator。

绝对没有两者之间的区别,除了某些HTML5validation器会抛出一个像ng-app属性的错误,但是他们不会抛出任何以data-为前缀的任何错误,如data-ng-app。 所以使用我们的angular度指令的数据前缀是好的。

即使你可以使用下面提到的方式使用angular指令ng-bind,ng:bind,ng_bind,data-ng-bind,x-ng-bind