我已经开始学习AngularJS,并对ng-app
和之间的区别感到困惑data-ng-app
指令。
我已经开始学习AngularJS,并对ng-app
和之间的区别感到困惑data-ng-app
指令。
Answers:
这些答案中的大多数只是在使模板成为有效的HTML或HTML Validator Compliant,而没有解释THOSE术语的含义。
我不确定,但是我猜测这些术语适用于HTML验证程序,该程序会扫描您的代码以确保其符合标准-有点像皮棉。它们不能识别ng-app
为有效属性。他们希望以非默认HTML属性开头
data-attribute_name_here
。
因此,的创建者AngularJS
已经为其指令创建了备用名称,这些指令的名称包括data-
它们前面的,以便HTML验证程序会“喜欢”它们。
就运行时行为而言,这些都不是,只是此处描述的命名指令样式不同:http : //docs.angularjs.org/guide/directive
指令具有驼峰式的名称,例如ngBind。可以通过将驼峰大小写名称转换为具有以下特殊字符:,-或_的蛇形大小写来调用该指令。可选地,该指令可以以x或data为前缀,以使其与HTML验证程序兼容。以下是一些可能的指令名称的列表:ng:bind,ng-bind,ng_bind,x-ng-bind和data-ng-bind。
正如您从阅读本文中看到的,它data-
可以使您的HTML通过HTML验证程序测试/
您可以声明角度命名空间 <html xmlns:ng="http://angularjs.org" ng-app>
在现代浏览器中没有区别,但是在较旧的IE中,除非您声明定义它的XML名称空间,否则它们将无法工作。
验证方面的区别还在于ng-app
无效的XHTML,这将导致您的网页无法通过HTML验证。Angular允许您在其指令前加上data-
或x-
使其进行验证。
如果要使页面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-app验证HTML,而后者不验证。功能保持不变。有关更多参考,您可以尝试使用w3Validator。