Fornecido um elemento HTML do tipo div, como definir o valor de seu idatributo, que é a concatenação de uma variável de escopo e uma string?
Fornecido um elemento HTML do tipo div, como definir o valor de seu idatributo, que é a concatenação de uma variável de escopo e uma string?
Respostas:
ngAttr diretiva pode ser totalmente útil aqui, conforme introduzido na documentação oficial
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
Por exemplo, para definir o idvalor do atributo de um divelemento, para que ele contenha um índice, um fragmento de visualização pode conter
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
que seria interpolado para
<div id="object-1"></div>
myScopeObjectseja uma propriedade de um scopeobjeto exposto usando um controlador. Consulte também docs.angularjs.org/guide/controller . Está claro o suficiente para você ou devo elaborar mais?
<div id="{{ 'object' + index }}">e <div ng-attr-id="{{ 'object' + index }}">? Os documentos parecem dizer que o precedente ng-attr-é ajudar nos casos em que o elemento é algo fora do padrão, como não a <div>. Estou lendo os documentos, certo?
Essa coisa funcionou muito bem para mim:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-idé vantajoso em 0% das situações. Nenhum exemplo pode ser fornecido, porque não há nenhum.
ng-attr-idmétodo é o de assegurar que a expressão ng bruto nunca é processado em um atributo válido HTML (por exemplo id, label, etc.). Esta é parar qualquer uso jusante lendo NG 'junk' (por exemplo, antes de tornar está completa, ou depois de um acidente js)
Caso você tenha chegado a essa pergunta, mas esteja relacionado à versão Angular mais recente> = 2.0 .
<div [id]="element.id"></div>
Uma maneira mais elegante que encontrei para atingir esse comportamento é simplesmente:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
Para minha implementação, eu queria que cada elemento de entrada em um ng-repeat para cada um tivesse um ID exclusivo para associar o rótulo. Portanto, para uma matriz de objetos contidos no myScopeObjects, é possível fazer o seguinte:
<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 gerar IDs únicos em tempo real pode ser bastante útil ao adicionar dinamicamente conteúdo como este.
Somente <input id="field_name_{{$index}}" />
Se você usar esta sintaxe:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angular renderizará algo como:
<div ng-id="object-1"></div>
No entanto, esta sintaxe:
<div id="{{ 'object-' + $index }}"></div>
irá gerar algo como:
<div id="object-1"></div>
ng-attr-idcriar ng-id..? isto é errado. Eu quero saber quem upvotes isso
myScopeObjectvem? Onde eu definiria isso?