Fornecido um elemento HTML do tipo div
, como definir o valor de seu id
atributo, que é a concatenação de uma variável de escopo e uma string?
javascript
angularjs
angularjs-scope
string-concatenation
Thierry Marianne
fonte
fonte
myScopeObject
vem? Onde eu definiria isso?myScopeObject
seja uma propriedade de umscope
objeto 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 precedenteng-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>
fonte
ng-attr-id
é vantajoso em 0% das situações. Nenhum exemplo pode ser fornecido, porque não há nenhum.ng-attr-id
método é o de assegurar que a expressão ng bruto nunca é processado em um atributo válido HTML (por exemploid
,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 .
fonte
Uma maneira mais elegante que encontrei para atingir esse comportamento é simplesmente:
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:
Ser capaz de gerar IDs únicos em tempo real pode ser bastante útil ao adicionar dinamicamente conteúdo como este.
fonte
Você poderia simplesmente fazer o seguinte
Em seus js
No seu modelo
o que renderizará
Não é necessário concatenar dentro de colchetes duplos.
fonte
Somente
<input id="field_name_{{$index}}" />
fonte
Se você usar esta sintaxe:
Angular renderizará algo como:
No entanto, esta sintaxe:
irá gerar algo como:
fonte
ng-attr-id
criarng-id
..? isto é errado. Eu quero saber quem upvotes isso