В AngularJS теги атрибуты


Я изучаю AngularJS и вижу, что он добавляет некоторые из своих собственных атрибутов, которые ни начинаются с данных, ни не являются стандартными атрибутами тегов html, например:

<html ng-app>

или такой:

<body ng-controller="PhoneListCtrl">

откуда берутся эти атрибуты ng - * и является ли это допустимым HTML? Где я могу прочитать больше об этом?

4 57

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-валидатором. Смотрите направляет документацию.

другой вариант-игнорировать неопределенные имена атрибутов. Если вы используете Eclipse, вы можете установить это, перейдя в project properties>>validation>>html syntax>>attributes>>ignore undefined attribute names.