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>>validation>>html syntax>>attributes>>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-controller
、ng-app
、ng-repeat
等)或自定义指令,我都会在它们前面加上 data-
。
【讨论】:
【参考方案3】:严格来说,这些额外的属性没有在 HTML 规范中定义,因此不是有效的 HTML。你可以说 AngularJS 提供并解析 HTML 规范的超集。
但是,从 v1.0.0rc1 开始,您可以使用 data-* 属性,例如 <html data-ng-app>
,我相信它是有效的 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 标签属性的主要内容,如果未能解决你的问题,请参考以下文章