Cómo establecer el atributo id de un elemento HTML dinámicamente con angularjs (1.x)?
Proporcionado un elemento HTML de tipo div
, cómo establecer el valor de su atributo id
, que es la concatenación de una variable de ámbito y una cadena ?
6 answers
ngAttr
directiva puede ser totalmente de ayuda aquí, como se introdujo en la documentación oficial
Https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
Por ejemplo, para establecer el valor del atributo id
de un elemento div
, de modo que contenga un índice, un fragmento de vista podría contener
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Que se interpolaría a
<div id="object-1"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-14 14:52:11
Esto me funcionó bastante bien:
<div id="{{ 'object-' + $index }}"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-13 05:45:12
Una forma más elegante que encontré para lograr este comportamiento es simplemente:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
Para mi implementación quería que cada elemento de entrada en un ng-repeat tuviera un id único con el que asociar la etiqueta. Así que para una matriz de objetos contenidos dentro de myScopeObjects uno podría hacer esto:
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
Ser capaz de generar identificadores únicos sobre la marcha puede ser bastante útil cuando se agrega dinámicamente contenido como este.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-16 16:53:49
En caso de que haya llegado a esta pregunta, pero relacionado con la nueva Versión angular >= 2.0.
<div [id]="element.id"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-17 16:06:00
Usted podría simplemente hacer lo siguiente
En su js
$scope.id = 0;
En su plantilla
<div id="number-{{$scope.id}}"></div>
Que rendirá
<div id="number-0"></div>
No es necesario concatenar dentro de llaves dobles.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-07 12:07:28
Si usa esta sintaxis:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angular renderizará algo como:
<div ng-id="object-1"></div>
Sin embargo esta sintaxis:
<div id="{{ 'object-' + $index }}"></div>
Generará algo como:
<div id="object-1"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-22 17:13:31