Menyediakan elemen tipe HTML div
, bagaimana mengatur nilai id
atributnya, yang merupakan gabungan dari variabel lingkup dan string?
Menyediakan elemen tipe HTML div
, bagaimana mengatur nilai id
atributnya, yang merupakan gabungan dari variabel lingkup dan string?
Jawaban:
ngAttr
arahan benar-benar dapat membantu di sini, seperti yang diperkenalkan dalam dokumentasi resmi
https://docs.angularjs.org/guide/interpolation#-ngattr-for-binding-to-arbitrary-attributes
Misalnya, untuk menetapkan nilai id
atribut div
elemen, sehingga mengandung indeks, fragmen tampilan mungkin berisi
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
yang akan diinterpolasi ke
<div id="object-1"></div>
myScopeObject
adalah properti dari scope
objek yang diekspos menggunakan controller Silakan lihat juga docs.angularjs.org/guide/controller . Apakah itu cukup jelas untuk Anda atau harus saya jelaskan lebih lanjut?
<div id="{{ 'object' + index }}">
dan <div ng-attr-id="{{ 'object' + index }}">
? Docs tampaknya mengatakan prapenggunaan ng-attr-
adalah untuk membantu kasus-kasus di mana elemennya adalah sesuatu yang tidak standar, seperti tidak a <div>
. Apakah saya membaca dokumen dengan benar?
Hal ini bekerja dengan baik untuk saya:
<div id="{{ 'object-' + $index }}"></div>
ng-attr-id
menguntungkan dalam 0% situasi. Tidak ada contoh yang dapat diberikan, karena tidak ada contoh.
ng-attr-id
metode adalah untuk memastikan bahwa ekspresi ng baku tidak pernah diberikan dalam atribut HTML yang valid (misalnya id
, label
, dll). Ini untuk menghentikan setiap penggunaan hilir yang membaca 'sampah' (mis. Sebelum render selesai, atau setelah crash js)
Jika Anda datang ke pertanyaan ini tetapi terkait dengan versi Angular yang lebih baru > = 2.0 .
<div [id]="element.id"></div>
Cara yang lebih elegan yang saya temukan untuk mencapai perilaku ini adalah:
<div id="{{ 'object-' + myScopeObject.index }}"></div>
Untuk implementasi saya, saya ingin setiap elemen input dalam pengulangan untuk masing-masing memiliki id unik untuk mengaitkan label dengan. Jadi untuk array objek yang terkandung di dalam myScopeObjects kita bisa melakukan ini:
<div ng-repeat="object in myScopeObject">
<input id="{{object.name + 'Checkbox'}}" type="checkbox">
<label for="{{object.name + 'Checkbox'}}">{{object.name}}</label>
</div>
Mampu menghasilkan id unik dengan cepat bisa sangat berguna saat menambahkan konten secara dinamis seperti ini.
Hanya <input id="field_name_{{$index}}" />
Jika Anda menggunakan sintaks ini:
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
Angular akan membuat sesuatu seperti:
<div ng-id="object-1"></div>
Namun sintaks ini:
<div id="{{ 'object-' + $index }}"></div>
akan menghasilkan sesuatu seperti:
<div id="object-1"></div>
ng-attr-id
buat ng-id
..? itu salah. Saya ingin tahu siapa yang memperbaiki ini
myScopeObject
? Di mana saya akan mendefinisikannya?