どのようにスコープ変数と文字列の連結であるdiv
属性の値を設定するには、id
型のHTML要素を提供しましたか?
公式文書で紹介されているように、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>
このことは私にはかなりうまくいきました:
<div id="{{ 'object-' + $index }}"></div>
私がこの振る舞いを達成するために見つけたもっとエレガントな方法は単純です:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
私の実装では、ng-repeatの各input要素がそれぞれラベルを関連付けるためのユニークな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を生成できることが非常に便利です。
この質問に来たが、より新しい Angular version> = 2.0 に関連している場合。
<div [id]="element.id"></div>
次のようにするだけでいいのです。
あなたのjsに
$scope.id = 0;
あなたのテンプレートで
<div id="number-{{$scope.id}}"></div>
どちらがレンダリングされます
<div id="number-0"></div>
二重の中括弧で連結する必要はありません。
<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>