При условии, что HTML-элемент типа div, как установить значение его idатрибута, который является объединением переменной области видимости и строки?
При условии, что HTML-элемент типа div, как установить значение его idатрибута, который является объединением переменной области видимости и строки?
Ответы:
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>
myScopeObjectэто свойство scopeобъекта, экспонируемого с помощью контроллера. Пожалуйста, смотрите также docs.angularjs.org/guide/controller . Это достаточно ясно для вас или я укажу дальше?
<div id="{{ 'object' + index }}">а <div ng-attr-id="{{ 'object' + index }}">? Документы, кажется, говорят, что готовится ng-attr-помочь в случаях, когда элемент является чем-то нестандартным, например, не a <div>. Я правильно читаю документы?
Эта вещь работала для меня довольно хорошо:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-idвыгодно в 0% ситуаций. Примеры не могут быть предоставлены, потому что их нет.
ng-attr-idМетод для того, чтобы сырье нг выражение никогда не оказывается в допустимом атрибута HTML (например id, labelи т.д.). Это должно остановить любое последующее использование чтения ng 'junk' (например, до завершения рендеринга или после сбоя js)
В случае, если вы пришли к этому вопросу, но связаны с более новой версией Angular> = 2.0 .
<div [id]="element.id"></div>
Более элегантный способ добиться такого поведения - просто:
<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>
Возможность генерировать уникальные идентификаторы на лету может быть очень полезна при динамическом добавлении контента, подобного этому.
Просто <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>
ng-attr-idсоздавать ng-id..? это неверно. Интересно, кто голосует против этого
myScopeObjectберутся? Где бы я это определил?