ng-app和data-ng-app有什么区别?

use*_*508 146 angularjs angularjs-directive

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

小智 123

这些答案大多数只是说模板有效的HTMLHTML Validator Compliant,而不解释这些术语的含义.

我不确定,但我猜这些术语适用于扫描代码以符合标准的HTML验证程序 - 有点像lint.它们不会被识别ng-app为有效属性.他们希望以非默认HTML属性为前缀

data-attribute_name_here.

因此,创建者AngularJS已经为他们的指令创建了替代名称,包括data-在他们面前,以便HTML验证程序将"喜欢"它们.

  • 有效的HTML不适用于HTML验证程序.浏览器解析HTML.如果您开始偏离HTML规范,则无法保证您的HTML将被正确解析. (22认同)
  • +"好吧.那么,'验证器符合'是什么意思?"无论如何?做法.如果你做过研究,你会发现你猜对了.=) (4认同)
  • @Blender"无法保证您的HTML将被正确解析",对于有效的HTML也是如此. (2认同)

pko*_*rce 40

就运行时行为而言,这些只是不同的命名指令样式,如下所述:http://docs.angularjs.org/guide/directive

指令有诸如ngBind之类的骆驼名称.可以通过将驼峰案例名称转换为具有以下特殊字符的蛇案例来调用该指令:, - 或_.可选地,该指令可以以x-或数据为前缀,以使其符合HTML验证器.以下列出了一些可能的指令名称:ng:bind,ng-bind,ng_bind,x-ng-bind和data-ng-bind.

从阅读本文中可以看出,data-可以用来使HTML传递HTML验证器测试/

  • @user1876508:http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#embedding-custom-non-visible-data-with-the-data-attributes (3认同)
  • 在HTML的规范中允许这样的地方? (2认同)

Mou*_*nir 6

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

  • 这似乎只适用于旧版应用程序:"如果您选择使用旧样式指令语法ng:那么在html中包含xml-namespace以使IE感到高兴.(这是出于历史原因,我们不再推荐使用NG:.)".资料来源:https://docs.angularjs.org/guide/bootstrap (2认同)

abj*_*ror 5

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

还有一个验证差异,即ng-app无效的XHTML,会导致您的网页无法通过HTML验证.Angular允许您为其指令添加前缀data-x-允许其进行验证.