Saya memiliki formulir ini: http://jsfiddle.net/dfJeN/
Seperti yang Anda lihat, nilai nama untuk input disetel secara statis:
name="username"
, validasi formulir berfungsi dengan baik (tambahkan sesuatu dan hapus semua teks dari input, teks harus muncul).
Kemudian saya mencoba mengatur nilai nama secara dinamis: http://jsfiddle.net/jNWB8/
name="{input.name}"
Kemudian saya menerapkan ini ke validasi saya
login.{{input.name}}.$error.required
(pola ini akan digunakan dalam ng-repeat) tetapi validasi formulir saya rusak. Ini diinterpretasikan dengan benar di browser saya (jika saya memeriksa elemen, saya melihat login.username. $ Error.required).
Ada ide ?
EDIT: Setelah masuk ruang lingkup di konsol tampak bahwa
{{input.name}}
ekspresi tidak interpolasi. Formulir saya sebagai atribut {{input.name}} tetapi tanpa nama pengguna.
UPDATE: Sejak 1.3.0-rc.3 name = "{{input.name}}" berfungsi seperti yang diharapkan. Silakan lihat # 1404
Jawaban:
Anda tidak dapat melakukan apa yang Anda coba lakukan dengan cara itu.
Dengan asumsi apa yang Anda coba lakukan adalah Anda perlu menambahkan elemen ke formulir secara dinamis, dengan sesuatu seperti ng-repeat, Anda perlu menggunakan ng-form bersarang untuk memungkinkan validasi item individual tersebut:
Sayangnya, ini bukan fitur Angular yang terdokumentasi dengan baik.
sumber
Menggunakan ngForm bersarang memungkinkan Anda mengakses InputController tertentu dari dalam template HTML. Namun, jika Anda ingin mengaksesnya dari pengontrol lain, itu tidak membantu.
misalnya
Saya menggunakan arahan ini untuk membantu memecahkan masalah:
Sekarang Anda menggunakan nama dinamis di mana pun yang diperlukan hanya atribut 'dynamic-name' bukan atribut 'name'.
misalnya
sumber
$interpolate
alih-alih$parse
, merasa lebih berguna<form ng-repeat="item in items" dynamic-name="'item'+item.id"> ... <span ng-show="item{{item.id}}.$invalid">This form is invalid</span></form>
?Masalahnya harus diperbaiki di AngularJS 1.3, menurut diskusi di Github ini .
Sementara itu, berikut adalah solusi sementara yang dibuat oleh @caitp dan @Thinkscape :
Demo di JSFiddle .
sumber
Bagus sekali oleh @EnISeeK .... tapi saya membuatnya lebih elegan dan tidak terlalu mengganggu arahan lain:
sumber
Hanya sedikit perbaikan atas solusi EnlSeek
Ini adalah uji coba plunker . Berikut penjelasan rinci
sumber
Saya memperluas solusi @caitp dan @Thinkscape sedikit, untuk memungkinkan bentuk ng bersarang yang dibuat secara dinamis , seperti ini:
Ini demo saya di JSFiddle .
sumber
Saya menggunakan solusi Ben Lesh dan itu bekerja dengan baik untuk saya. Tapi satu masalah yang saya hadapi adalah ketika saya menambahkan bentuk dalam menggunakan
ng-form
, semua bentuk menyatakan misalnyaform.$valid, form.$error
dll menjadi tidak terdefinisi jika saya menggunakanng-submit
direktif.Jadi jika saya punya ini misalnya:
Dan di pengontrol saya:
Jadi saya harus kembali menggunakan acara klik biasa untuk mengirimkan formulir dalam hal ini perlu meneruskan objek formulir:
Dan metode pengontrol yang direvisi:
Saya tidak begitu yakin mengapa ini tetapi mudah-mudahan ini membantu seseorang.
sumber
Masalah ini telah diperbaiki di Angular 1.3+ Ini adalah sintaks yang benar untuk apa yang Anda coba lakukan:
sumber
sumber