Jak ustawić atrybut id elementu HTML dynamicznie za pomocą angularjs (1.x)?

Pod warunkiem elementu HTML typu div, Jak ustawić wartość jego atrybutu id, który jest połączeniem zmiennej scope i łańcucha znaków ?

Author: Thierry Marianne, 2014-05-14

6 answers

ngAttr dyrektywa może być tutaj całkowicie pomocna, jak wprowadzono w oficjalnej dokumentacji

Https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes

Na przykład, aby ustawić wartość atrybutu id elementu div tak, aby zawierał indeks, fragment widoku może zawierać

<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>

Które byłyby interpolowane do

<div id="object-1"></div>
 353
Author: Thierry Marianne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-14 14:52:11

To coś działało na mnie całkiem nieźle:

<div id="{{ 'object-' + $index }}"></div>

 54
Author: Tanveer Shaikh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 05:45:12

Bardziej eleganckim sposobem, jaki znalazłem, aby osiągnąć to zachowanie, jest po prostu:

<div id="{{ 'object-' + myScopeObject.index }}"></div>

Dla mojej implementacji chciałem, aby każdy element wejściowy w ng-repeat miał unikalny identyfikator, z którym można powiązać Etykietę. Tak więc dla tablicy obiektów zawartych w obiektach myScopeObjects można to zrobić:

<div ng-repeat="object in myScopeObject">
    <input id="{{object.name + 'Checkbox'}}" type="checkbox">
    <label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>

Możliwość generowania unikalnych identyfikatorów w locie może być bardzo przydatna przy dynamicznym dodawaniu takich treści.

 22
Author: Cumulo Nimbus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-16 16:53:49

W przypadku gdybyś przyszedł do tego pytania, ale związane z nowszą Wersja kątowa > = 2.0.

<div [id]="element.id"></div>
 11
Author: SoEzPz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 16:06:00

Możesz po prostu wykonać następujące czynności]}

W Twoim js

$scope.id = 0;

W szablonie

<div id="number-{{$scope.id}}"></div>

Który wyrenderuje

<div id="number-0"></div>

Nie jest konieczne łączenie wewnątrz podwójnych nawiasów klamrowych.

 9
Author: emil.c,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-07 12:07:28

Jeśli używasz tej składni:

<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>

Angular renderuje coś w stylu:

 <div ng-id="object-1"></div>

Jednak ta składnia:

<div id="{{ 'object-' + $index }}"></div>

Wygeneruje coś w stylu:

<div id="object-1"></div>
 0
Author: K Rajesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-22 17:13:31