Misalkan saya ingin melakukan sesuatu seperti menjalankan beberapa kode secara otomatis (seperti menyimpan data ke server) setiap kali nilai model berubah. Apakah satu-satunya cara untuk melakukan ini dengan menyetel sesuatu seperti ng-change
pada setiap kontrol yang mungkin dapat mengubah model?
Yaitu, dengan tampilan, banyak hal berubah saat model diubah tanpa harus secara eksplisit menghubungkan apa pun. Apakah ada analogi untuk dapat menjalankan kode yang disimpan ke server? Sesuatu seperti
myModel.on('change', function() {
$.post("/my-url", ...);
});
seperti yang mungkin Anda lihat dengan sesuatu seperti tulang punggung.
sumber
ng-change
kait pada kontrol masukan menjadi ide yang lebih baik?Dan jika Anda perlu mengatur gaya elemen formulir Anda sesuai dengan keadaannya (dimodifikasi / tidak diubah) secara dinamis atau untuk menguji apakah beberapa nilai benar-benar berubah, Anda dapat menggunakan modul berikut, yang dikembangkan sendiri: https://github.com/betsol / sudut-masukan-dimodifikasi
Ia menambahkan properti dan metode tambahan ke formulir dan elemen anaknya. Dengan itu, Anda dapat menguji apakah beberapa elemen berisi data baru atau bahkan menguji apakah seluruh formulir memiliki data baru yang belum disimpan.
Anda dapat mengatur jam tangan berikut:
$scope.$watch('myForm.modified', handler)
dan penangan Anda akan dipanggil jika beberapa elemen formulir benar-benar berisi data baru atau jika dibalik ke keadaan awal.Selain itu, Anda dapat menggunakan
modified
properti elemen formulir individu untuk benar-benar mengurangi jumlah data yang dikirim ke server melalui panggilan AJAX. Tidak perlu mengirim data yang tidak diubah.Sebagai bonus, Anda dapat mengembalikan formulir Anda ke keadaan awal melalui
reset()
metode panggilan ke formulir .Anda dapat menemukan demo modul di sini: http://plnkr.co/edit/g2MDXv81OOBuGo6ORvdt?p=preview
Bersulang!
sumber
<form name="myForm">
,<button ng-click="vm.doSomething(myForm)">
.FormController
kedoSomething()
fungsi pengontrol Anda. Anda bisa melakukan apapun yang Anda inginkan dengan itu di dalam fungsi itu, misalnya memeriksa apakah form benar-benar diubah dengan memeriksaFormController.modified
properti boolean.