Untuk kasus penggunaan tertentu, saya harus menyerahkan satu formulir dengan "cara lama". Berarti, saya menggunakan formulir dengan action = "". Responsnya dialirkan, jadi saya tidak memuat ulang laman. Saya sepenuhnya menyadari bahwa aplikasi AngularJS biasa tidak akan mengirimkan formulir seperti itu, tetapi sejauh ini saya tidak punya pilihan lain.
Yang mengatakan, saya mencoba mengisi beberapa bidang tersembunyi dari Angular:
<input type="hidden" name="someData" ng-model="data" /> {{data}}
Harap dicatat, nilai yang benar dalam data ditampilkan.
Bentuknya terlihat seperti bentuk standar:
<form id="aaa" name="aaa" action="/reports/aaa.html" method="post">
...
<input type="submit" value="Export" />
</form>
Jika saya tekan kirim, tidak ada nilai yang dikirim ke server. Jika saya mengubah bidang input untuk mengetik "teks" itu berfungsi seperti yang diharapkan. Asumsi saya adalah bidang tersembunyi tidak benar-benar diisi, sedangkan bidang teks sebenarnya ditampilkan karena mengikat dua arah.
Adakah gagasan bagaimana saya bisa mengirimkan bidang tersembunyi yang dihuni oleh AngularJS?
sumber
display: none;
,? Itu buruk sekali. Sudut mengabaikan elemen tersembunyi.<input type="hidden" required ng-model="data.userid" ng-init="data.userid=pivot.id" />
. Ini mungkin bukan cara yang tepat untuk dilakukan tetapi ini berhasil untuk saya.Jawaban:
Anda tidak dapat menggunakan ikatan ganda dengan bidang tersembunyi. Solusinya adalah dengan menggunakan tanda kurung:
EDIT: Lihat utas ini di github: https://github.com/angular/angular.js/pull/2574
EDIT:
Sejak Angular 1.2, Anda dapat menggunakan arahan 'ng-value' untuk mengikat ekspresi ke atribut nilai input. Arahan ini harus digunakan dengan radio input atau kotak centang tetapi bekerja dengan baik dengan input tersembunyi.
Inilah solusinya menggunakan nilai-ng:
Berikut adalah biola yang menggunakan nilai-ng dengan input tersembunyi: http://jsfiddle.net/6SD9N
sumber
Anda selalu dapat menggunakan a
type=text
dandisplay:none;
karena Angular mengabaikan elemen tersembunyi. Seperti kata OP, biasanya Anda tidak akan melakukan ini, tetapi ini sepertinya kasus khusus.sumber
Di controller:
Dalam tampilan:
sumber
entityId
jikaentityId
adalah arraySaya telah menemukan solusi bagus yang ditulis oleh Mike pada sapiensworks . Ini sesederhana menggunakan arahan yang mengawasi perubahan pada model Anda:
dan kemudian ikat input Anda:
Tetapi solusi yang disediakan oleh tymeJV bisa lebih baik sebagai input tersembunyi tidak memecat acara perubahan dalam javascript seperti yang dikatakan yycorman pada posting ini , jadi ketika mengubah nilai melalui plugin jQuery masih akan berfungsi.
Sunting Saya telah mengubah arahan untuk menerapkan nilai baru kembali ke model ketika perubahan acara dipicu, sehingga akan berfungsi sebagai teks input.
jadi ketika Anda memicu
$("#yourInputHidden").trigger('change')
acara dengan jQuery, itu akan memperbarui model yang diikat juga.sumber
Menemukan perilaku aneh tentang nilai tersembunyi ini () dan kami tidak dapat membuatnya berfungsi.
Setelah bermain-main kami menemukan cara terbaik hanya mendefinisikan nilai dalam controller itu sendiri setelah lingkup bentuk.
sumber
Saya mencapai ini melalui -
sumber
perbarui jawaban @tymeJV misalnya:
sumber
Saya telah menghadapi masalah yang sama, saya benar-benar perlu mengirim kunci dari jsp saya ke skrip java, menghabiskan sekitar 4 jam atau lebih dari hari saya untuk menyelesaikannya.
Saya menyertakan tag ini pada JavaScript / JSP saya:
Hasilnya adalah: Portfólio 1 criado com sucesso! ID = 3.
Salam Hormat
sumber
Kalau-kalau ada orang yang masih berjuang dengan ini, saya punya masalah yang sama ketika mencoba untuk melacak sesi pengguna / userid pada formulir multi halaman
Saya sudah memperbaikinya dengan menambahkan
.when ("/ q2 /: uid" dalam perutean:
Dan menambahkan ini sebagai bidang tersembunyi untuk melewati params antara halaman webform
<< tipe input = "tersembunyi" wajib ng-model = "formData.userid" ng-init = "formData.userid = uid" />
Saya baru untuk Angular jadi tidak yakin itu solusi terbaik tetapi tampaknya berfungsi baik untuk saya sekarang
sumber
Langsung memberikan nilai ke model dalam
data-ng-value
atribut. Karena penerjemah Angular tidak mengenali bidang tersembunyi sebagai bagian dari ngModel.sumber
Saya menggunakan javascript klasik untuk mengatur nilai ke input tersembunyi
sumber
Kode di bawah ini akan berfungsi untuk IFF ini dengan urutan yang sama seperti yang disebutkan, pastikan Anda memesan, ketik nama, ng-model ng-init, nilai. itu dia.
sumber
Di sini saya ingin membagikan kode kerja saya:
sumber