1

これは、AngularJS 構文に関する簡単な質問です。これらの次のコードは同等であり、互換的に使用できますか?

<div ng-class="!!navigation.path ? '' : 'dropdown'"></div>

<div ng_class="!!navigation.path ? '' : 'dropdown'"></div>


HAML を使用して Angular テンプレートを作成すると、次のことができるので、これは重要です。

%div{ng_class: "!!navigation.path ? '' : 'dropdown'"}

これの代わりに:

%div{"ng-class" => "!!navigation.path ? '' : 'dropdown'"}
4

1 に答える 1

1

私の頭の上から、それらは同等ではなく、2番目のものは無効であると思います。ng-appしかし、驚いたことに、簡単なテストを行った後、ディレクティブを除いて、両方とも有効で機能しているようです。このjsFiddle はそれを示しています。

ただし、これは文書化されていません。ドキュメントの内容は次のとおりです。

(...) これらはすべて Angular で同等に扱われるため、正規化が必要です。

<span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">

とは言っても、コードを将来的に保証するために、ドキュメントに固執し、公式の形式のいずれかを選択する方が安全だと思います。

アップデート

Angular docsで次のことを知りました。

ディレクティブには、ngBind などのキャメル ケースの名前があります。このディレクティブは、キャメル ケース名を特殊文字 :、-、または _ を使用してスネーク ケースに変換することで呼び出すことができます。オプションで、ディレクティブの前に x- または data- を付けて、HTML バリデータに準拠させることができます。以下は、可能なディレクティブ名の一部のリストです: ng:bind、ng-bind、ng_bind、x-ng-bind、および data-ng-bind。

したがって、アンダースコアをディレクティブの名前の単語区切りとして安全に使用できるようです-ただし、ng-app.

于 2013-08-25T01:53:35.820 に答える