В AngularJS теги атрибуты
Я изучаю AngularJS и вижу, что он добавляет некоторые из своих собственных атрибутов, которые ни начинаются с данных, ни не являются стандартными атрибутами тегов html, например:
<html ng-app>
или такой:
<body ng-controller="PhoneListCtrl">
откуда берутся эти атрибуты ng - * и является ли это допустимым HTML? Где я могу прочитать больше об этом?
4 ответа:
строго говоря эти дополнительные атрибуты не определены в спецификациях HTML таким образом, не являются допустимыми HTML. Можно сказать, что AngularJS предоставляет и анализирует надмножество спецификации 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="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.так что для любого моего углового объявления (например
ng-controller
,ng-app
,ng-repeat
etc) или пользовательские директивы я всегда буду префикс их сdata-
.
откуда берутся эти атрибуты ng -*
из главной модуль ng. исходный код.
это допустимый HTML?
нет. Но директивы атрибутивного стиля могут иметь префикс x - или data-чтобы сделать его совместимым с HTML-валидатором. Смотрите направляет документацию.