AngularJS标签属性

我正在学习AngularJS,看到它添加了一些自己的属性,也没有开始数据既不是标准的HTML标签属性,像这样:

<html ng-app> 

或这个:

 <body ng-controller="PhoneListCtrl"> 

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

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

但是,从v1.0.0rc1开始,您可以使用data- *属性,例如<html data-ng-app> ,我相信这些属性都是有效的HTML5。 来源 。

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

从文档: http : //docs.angularjs.org/guide/directive

 <!doctype html> <html data-ng-app> <head> <script src="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-前缀。

从哪里来这些ng- *属性来

从主模块 。 源代码 。

是一个有效的HTML?

但是,属性风格的指令可以用x-或data-作为前缀,以使其符合HTMLvalidation器。 请参阅直接文件 。

另一种select是忽略未定义的属性名称。 如果您使用的是Eclipse,可以通过转到项目properties>>validation>>html syntax>>attributes>>ignore undefined attribute names