Menyediakan elemen tipe HTML div, bagaimana mengatur nilai idatributnya, yang merupakan gabungan dari variabel lingkup dan string?
Menyediakan elemen tipe HTML div, bagaimana mengatur nilai idatributnya, 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 idatribut divelemen, sehingga mengandung indeks, fragmen tampilan mungkin berisi
<div ng-attr-id="{{ 'object-' + myScopeObject.index }}"></div>
yang akan diinterpolasi ke
<div id="object-1"></div>
myScopeObjectadalah properti dari scopeobjek 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-idmenguntungkan dalam 0% situasi. Tidak ada contoh yang dapat diberikan, karena tidak ada contoh.
ng-attr-idmetode 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-idbuat ng-id..? itu salah. Saya ingin tahu siapa yang memperbaiki ini
myScopeObject? Di mana saya akan mendefinisikannya?