typeのHTML要素を提供し、スコープ変数と文字列を連結div
したid
属性の値を設定する方法は?
typeのHTML要素を提供し、スコープ変数と文字列を連結div
したid
属性の値を設定する方法は?
回答:
ngAttr
公式ドキュメントで紹介されているように、ディレクティブはここで完全に役立ちます
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
たとえばid
、div
要素の属性値を設定して要素にインデックスを含めるには、ビューフラグメントに
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
補間されます
<div id="object-1"></div>
myScopeObject
たscope
オブジェクトのプロパティであると仮定します。docs.angularjs.org/guide/controllerも参照してください。それで十分でしょうか、それとももう少し詳しく説明しますか?
<div id="{{ 'object' + index }}">
と<div ng-attr-id="{{ 'object' + index }}">
?ドキュメントはng-attr-
、要素がのような非標準的なものである場合を助けるために前に付加することであると言っているようです<div>
。私はドキュメントを正しく読んでいますか?
このことは私にはかなりうまくいきました:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-id
状況の0%で有利です。例がないため、例を提供できません。
ng-attr-id
この方法は、生NG式が(例えば、有効なHTML属性でレンダリングされないことを確実にするためであるid
、label
など)。これは、任意の下流の使用が「ジャンク」をngの読み取りを停止することがある(例えば前にレンダリングし、完全な、またはjsのクラッシュの後で)
この質問に来たが、新しいAngularバージョン> = 2.0に関連している場合。
<div [id]="element.id"></div>
この動作を実現するために私が見つけたよりエレガントな方法は単純です:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
私の実装では、ng-repeatの各入力要素にそれぞれラベルを関連付ける一意のIDが必要でした。したがって、myScopeObjects内に含まれるオブジェクトの配列の場合、これを行うことができます。
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
このように動的にコンテンツを追加する場合、その場で一意のIDを生成できると非常に便利です。
ただ <input id="field_name_{{$index}}" />
この構文を使用する場合:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angularは次のようなものをレンダリングします:
<div ng-id="object-1"></div>
ただし、この構文:
<div id="{{ 'object-' + $index }}"></div>
次のようなものが生成されます:
<div id="object-1"></div>
ng-attr-id
作成する必要がありng-id
ますか?それは間違っている。誰がこれに賛成するのかしら
myScopeObject
から来たの?どこで定義しますか?