AngularJS 标签属性

Posted

技术标签:

【中文标题】AngularJS 标签属性【英文标题】:AngularJS tags attributes 【发布时间】:2012-08-19 21:44:38 【问题描述】:

我正在学习 AngularJS,看到它添加了一些自己的属性,这些属性既不是以数据开头,也不是标准的 html 标记属性,如下所示:

<html ng-app>

或者这个:

<body ng-controller="PhoneListCtrl">

这些 ng-* 属性是从哪里来的,这是一个有效的 HTML 吗?我可以在哪里阅读有关此内容的更多信息?

【问题讨论】:

【参考方案1】:

另一个选项是忽略未定义的属性名称。如果您使用的是 Eclipse,您可以通过转到项目 properties&gt;&gt;validation&gt;&gt;html syntax&gt;&gt;attributes&gt;&gt;ignore undefined attribute names 进行设置。

【讨论】:

【参考方案2】:

来自文档:http://docs.angularjs.org/guide/directive

<!doctype html>
<html data-ng-app>
  <head>
    <script src="http://code.angularjs.org/1.0.7/angular.min.js"></script>
    <script src="script.js"></script>
  </head>
  <body>
    <div data-ng-controller="Ctrl1">
      These are all valid directive declarations:<br/>
      <input ng-model='name'> <hr/>
      <span ng:bind="name"></span> <br/>
      <span ng_bind="name"></span> <br/>
      <span ng-bind="name"></span> <br/>          
      <span x-ng-bind="name"></span> <br/>
      <span data-ng-bind="name"></span> <br/>
    </div>
  </body>
</html>

我最喜欢 data-*whatever* 声明,因为它符合 HTML5。

因此,对于我的任何 Angular 声明(例如 ng-controllerng-appng-repeat 等)或自定义指令,我都会在它们前面加上 data-

【讨论】:

【参考方案3】:

严格来说,这些额外的属性没有在 HTML 规范中定义,因此不是有效的 HTML。你可以说 AngularJS 提供并解析 HTML 规范的超集。

但是,从 v1.0.0rc1 开始,您可以使用 data-* 属性,例如 &lt;html data-ng-app&gt;,我相信它是有效的 HTML5。 Source.

AngularJS Compiler 有一个指南,其中包含有关该过程的更多信息。简而言之; AngularJS 编译器读取您的 HTML 页面,使用这些属性来指导它在加载后通过 javascript 和 HTML DOM 编辑和更新您的页面。

【讨论】:

澄清一下,是的data-X 符合 HTML5,因为 data- 前缀用于自定义属性。【参考方案4】:

这些 ng-* 属性从何而来

来自主要ng module。 Source code.

这是一个有效的 HTML 吗?

没有。但是属性样式指令可以以 x- 或 data- 为前缀,以使其符合 HTML 验证器。见direcives documentation。

【讨论】:

以上是关于AngularJS 标签属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在jquery datepicker中向html属性添加角度标签

AngularJS 自定义指令

AngularJS参数绑定 --AngularJS

angularJS 表单验证

Angularjs

Angularjs 中的iframe 标签 ng-src 路径 报错问题 解决办法