Vorausgesetzt , ein HTML - Element des Typs div
, wie man den Wert seines einzustellen id
Attribut, das die Verkettung eines Umfang Variablen und eine Zeichenfolge ist?
Vorausgesetzt , ein HTML - Element des Typs div
, wie man den Wert seines einzustellen id
Attribut, das die Verkettung eines Umfang Variablen und eine Zeichenfolge ist?
Antworten:
ngAttr
Die Richtlinie kann hier sehr hilfreich sein, wie in der offiziellen Dokumentation beschrieben
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
Um beispielsweise den id
Attributwert eines div
Elements so festzulegen, dass es einen Index enthält, kann ein Ansichtsfragment enthalten
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
das würde interpoliert werden
<div id="object-1"></div>
myScopeObject
handelt sich um eine Eigenschaft eines scope
Objekts, das mithilfe eines Controllers verfügbar gemacht wird. Siehe auch docs.angularjs.org/guide/controller . Ist Ihnen das klar genug oder werde ich weiter darauf eingehen?
<div id="{{ 'object' + index }}">
und <div ng-attr-id="{{ 'object' + index }}">
? Die Dokumente scheinen zu sagen, dass das Voranstellen ng-attr-
in Fällen hilfreich ist, in denen das Element nicht dem Standard entspricht, z. B. nicht a <div>
. Lese ich die Dokumente richtig?
Dieses Ding hat bei mir ziemlich gut funktioniert:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-id
ist in 0% der Situationen vorteilhaft. Es können keine Beispiele angegeben werden, da es keine gibt.
ng-attr-id
Verfahren besteht darin , sicherzustellen , dass der rohe ng Ausdruck nie in einem gültigen HTML - Attribute gerendert wird (zB id
, label
usw.). Dies dient dazu, jegliche nachgelagerte Verwendung von ng 'Junk' zu stoppen (z. B. bevor das Rendern abgeschlossen ist oder nach einem js-Absturz)
Falls Sie zu dieser Frage gekommen sind, sich aber auf eine neuere Angular-Version> = 2.0 beziehen .
<div [id]="element.id"></div>
Ein eleganterer Weg, dieses Verhalten zu erreichen, ist einfach:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
Für meine Implementierung wollte ich, dass jedes Eingabeelement in einer ng-Wiederholung eine eindeutige ID hat, mit der das Label verknüpft werden kann. Für ein Array von Objekten in myScopeObjects könnte man also Folgendes tun:
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
Wenn Sie solche Inhalte dynamisch hinzufügen, kann es sehr nützlich sein, im laufenden Betrieb eindeutige IDs zu generieren.
Gerade <input id="field_name_{{$index}}" />
Wenn Sie diese Syntax verwenden:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angular rendert so etwas wie:
<div ng-id="object-1"></div>
Jedoch diese Syntax:
<div id="{{ 'object-' + $index }}"></div>
wird so etwas erzeugen wie:
<div id="object-1"></div>
ng-attr-id
erstellen ng-id
..? das ist falsch. Ich frage mich, wer dies positiv bewertet
myScopeObject
das? Wo würde ich es definieren?