ngChange diaktifkan saat nilainya berubah (ngChange tidak sama dengan acara onChange klasik). Bagaimana cara mengikat acara onChange klasik dengan angularjs, yang hanya akan aktif ketika konten dikomit?
Pengikatan saat ini:
<input type="text" ng-model="name" ng-change="update()" />
Jawaban:
Posting ini menunjukkan contoh arahan yang menunda perubahan model ke input sampai peristiwa blur diaktifkan.
Berikut ini biola yang menunjukkan ng-change bekerja dengan direktif ng-model-on-blur yang baru. Perhatikan bahwa ini adalah sedikit perubahan pada biola aslinya .
Jika Anda menambahkan arahan ke kode Anda, Anda akan mengubah pengikatan Anda ke ini:
Berikut arahannya:
Catatan: seperti yang @wjin sebutkan di komentar di bawah, fitur ini didukung langsung di Angular 1.3 (saat ini dalam versi beta) melalui
ngModelOptions
. Lihat dokumen untuk info lebih lanjut.sumber
ng-blur
arahan: docs.angularjs.org/api/ng.directive:ngBlurng-model-options="{ updateOn: 'default blur' }"
Lihat dokumentasi$sniffer
untuk menentukan apakah browser mendukung 'masukan' dan jika tidak, mereka kembali ke 'keydown'. Jika Anda memperbarui petunjuk di atas untuk hanya melepaskan 'input' jika$sniffer.hasEvent('input')
mengembalikan nilai true - maka Anda dapat menghindari kesalahan itu dan masih berfungsi di IE8Ini tentang tambahan terbaru untuk AngularJS, untuk dijadikan jawaban di masa mendatang (juga untuk pertanyaan lain ).
Versi Angular yang lebih baru (sekarang dalam 1,3 beta), AngularJS secara native mendukung opsi ini, menggunakan
ngModelOptions
, likeDokumentasi NgModelOptions
Contoh:
sumber
Jika ada orang lain yang mencari dukungan tombol "masuk" tambahan, berikut ini pembaruan untuk biola yang disediakan oleh Gloppy
Kode untuk mengikat tombol:
sumber
Untuk siapa pun yang berjuang dengan IE8 (tidak suka pelepasan ('input'), saya menemukan cara untuk mengatasinya.
Masukkan $ sniffer ke dalam direktif Anda dan gunakan:
IE8 akan tenang jika Anda melakukan ini :)
sumber
Menurut pengetahuan saya, kita harus menggunakan ng-change dengan opsi pilih dan dalam kasus kotak teks kita harus menggunakan ng-blur.
sumber
Bukankah menggunakan $ scope. $ Watch untuk mencerminkan perubahan variabel scope dengan lebih baik?
sumber
sumber
Saya memiliki masalah yang persis sama dan ini berhasil untuk saya. Tambahkan
ng-model-update
danng-keyup
Anda siap melakukannya! Ini dokumentasinyasumber