私はAngularJSについて学び始め、ng-app
とdata-ng-app
ディレクティブの違いは何なのか混乱しています。
私はAngularJSについて学び始め、ng-app
とdata-ng-app
ディレクティブの違いは何なのか混乱しています。
回答:
これらの回答のほとんどは、単にTHOSEの用語の意味も説明せずに、テンプレートを有効なHTMLまたはHTML Validatorに準拠させるとだけ言っています。
確かではありませんが、これらの用語は、コードの標準準拠をスキャンするHTML検証プログラム(lintのようなもの)に適用されると思います。それらはng-app
有効な属性として認識されません。彼らは、デフォルトではないHTML属性の前に
data-attribute_name_here
。
したがって、の作成者は、HTML検証プログラムがそれらを「好き」になるようAngularJS
に、ディレクティブのdata-
前にを含む代替名を作成しています。
ランタイムの動作という点ではありません。これらは、ここで説明されているように、命名ディレクティブの異なるスタイルにすぎません。http://docs.angularjs.org/guide/directive
ディレクティブには、ngBindなどのキャメルケース名があります。ディレクティブは、キャメルケース名をこれらの特殊文字:、-、または_を使用してスネークケースに変換することで呼び出すことができます。オプションで、ディレクティブの前にxまたはデータを付加して、HTMLバリデーターに準拠させることができます。以下は、可能なディレクティブ名の一部のリストです:ng:bind、ng-bind、ng_bind、x-ng-bind、data-ng-bind。
これを読むとわかるように、これをdata-
使用してHTMLをHTMLバリデーターテストに合格させることができます/
角度の名前空間を宣言できます <html xmlns:ng="http://angularjs.org" ng-app>
最新のブラウザーでは違いはありませんが、古いIEでは、XMLネームスペースを宣言して宣言しない限り機能しません。
ng-app
有効なXHTMLではないという検証の違いもあり、WebページがHTML検証に失敗する原因になります。Angularでは、ディレクティブにプレフィックスを付けdata-
たりx-
、検証を許可したりできます。
ページのHTMLを有効にする場合は、ng-の代わりにdata-ng-を使用できます。
これはエラーをスローします
<div ng-app="">
<p>Input something in the input box:</p>
<p>Name: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
これはエラーをスローしません
<div data-ng-app="scope" data-ng-init="name='test'">
<p>Input something in the input box:</p>
<p>Name: <input type="text" data-ng-model="name"></p>
<p data-ng-bind="name"></p>
</div>
これら2つの用語の基本的な違いは、data-ng-appはHTMLを検証しますが、後者は検証しないことです。機能は同じままです。詳細については、w3Validatorをお試しください。