57

私は AngularJS について学んでおり、次のように、標準の html タグ属性ではなく、データで始まる独自の属性がいくつか追加されていることがわかります。

<html ng-app>

またはこれ:

<body ng-controller="PhoneListCtrl">

これらの ng-* 属性はどこから来て、それは有効な HTML ですか? これについての詳細はどこで確認できますか?

4

4 に答える 4

51

厳密に言えば、これらの追加属性は HTML 仕様で定義されていないため、有効な HTML ではありません。AngularJS は、HTML 仕様のスーパーセットを提供および解析していると言えます。

ただし、v1.0.0rc1 の時点では、data-* 属性を使用できます。たとえば<html data-ng-app>、これは有効な HTML5 であると思います。ソース

AngularJS Compilerのガイドには、プロセスに関する詳細情報が含まれています。要するに; AngularJS コンパイラは HTML ページを読み取り、これらの属性を使用してページを編集および更新する際に、ロード後に JavaScript および HTML DOM を介してそれをガイドします。

于 2012-08-24T10:49:35.813 に答える
27

ドキュメントから: 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-repeatdata-

于 2013-03-10T00:39:49.943 に答える
8

これらの ng-* 属性はどこから来たのですか

メインng モジュールから。ソースコード

それは有効なHTMLですか?

いいえ。ただし、属性スタイル ディレクティブに x- または data- をプレフィックスとして付けて、HTML バリデーターに準拠させることができます。ディレクティブのドキュメントを参照してください。

于 2012-08-24T10:55:56.907 に答える