Pod warunkiem elementu HTML typu div
, jak ustawić wartość jego id
atrybutu, który jest konkatenacją zmiennej zasięgu i łańcucha?
javascript
angularjs
angularjs-scope
string-concatenation
Thierry Marianne
źródło
źródło
myScopeObject
pochodzi? Gdzie mam to zdefiniować?myScopeObject
jest własnościąscope
obiektu odsłoniętego za pomocą kontrolera. Zobacz także docs.quarejs.org/guide/controller . Czy to dla ciebie wystarczająco jasne, czy powinienem dalej opracowywać?<div id="{{ 'object' + index }}">
i<div ng-attr-id="{{ 'object' + index }}">
? Dokumenty zdają się mówić, że przygotowywanieng-attr-
ma pomóc w przypadkach, w których element jest czymś niestandardowym, na przykład nie<div>
. Czy czytam dokumenty, prawda?Ta rzecz działała dla mnie całkiem dobrze:
<div id="{{ 'object-' + $index }}"></div>
źródło
ng-attr-id
jest korzystny w 0% sytuacji. Nie można podać żadnych przykładów, ponieważ nie ma żadnych.ng-attr-id
Sposobem jest zapewnienie, że surowe ng ekspresja nie staje się ważnym atrybutem HTML (na przykładid
,label
itp). Ma to na celu powstrzymanie dalszego odczytu „śmieci” (np. Przed zakończeniem renderowania lub po awarii js)Na wypadek, gdybyś przyszedł do tego pytania, ale dotyczył nowszej wersji Angular> = 2.0 .
źródło
Bardziej eleganckim sposobem na osiągnięcie tego zachowania jest po prostu:
Dla mojej implementacji chciałem, aby każdy element wejściowy w powtórzeniu ng miał niepowtarzalny identyfikator do powiązania etykiety. Tak więc dla tablicy obiektów zawartych w myScopeObjects można to zrobić:
Możliwość generowania unikalnych identyfikatorów w locie może być bardzo przydatna podczas dynamicznego dodawania takich treści.
źródło
Możesz po prostu wykonać następujące czynności
W twoim js
W twoim szablonie
co będzie renderowane
Nie jest konieczne łączenie w nawiasach klamrowych podwójnych.
źródło
Właśnie
<input id="field_name_{{$index}}" />
źródło
Jeśli użyjesz tej składni:
Angular renderuje coś takiego:
Jednak ta składnia:
wygeneruje coś takiego:
źródło
ng-attr-id
tworzyćng-id
...? to jest źle. Zastanawiam się, kto to zagłosował