javascript - Как установить атрибут id элемента HTML динамически с помощью angularjs(1.x)?



angularjs-scope string-concatenation (4)

Предоставлен элемент HTML типа div , как установить значение его атрибута id , который является конкатенацией переменной области и строкой?

https://src-bin.com


Answer #1

Если вы пришли к этому вопросу, но связаны с более новой версией Angular> = 2.0 .

<div [id]="element.id"></div>

Answer #2

Более элегантный способ, который я нашел для достижения такого поведения, просто:

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

Для моей реализации я хотел, чтобы каждый элемент ввода в ng-repeat имел уникальный идентификатор, чтобы связать метку с. Итак, для массива объектов, содержащихся внутри myScopeObjects, можно сделать следующее:

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

Возможность генерации уникальных идентификаторов «на лету» может быть очень полезна при динамическом добавлении контента, подобного этому.


Answer #3

Директива 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>

Answer #4

Если вы используете этот синтаксис:

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

Угловое будет выглядеть примерно так:

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

Однако этот синтаксис:

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

будет генерировать что-то вроде:

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




string-concatenation