Rumah > Soal Jawab > teks badan
详细描述:
$watch监视一个下拉框,期望情况是只有当用户点击下拉框中的选项时,前端才请求后端更新数据。
目前的问题是:
当网页加载时,下拉框第一次出现,$watch会自动执行一次,ng的机制认为加载就是一次用户的点击。
希望了解如何禁止这种情况的$watch自动执行
迷茫2017-05-15 17:06:22
Terima kasih atas jemputan.
Pertama sekali, bolehkah saya membetulkan sedikit kecacatan dalam perkataan.
Anda berkata "$watch monitors a drop-down box", ng
ialah rangka kerja yang melaksanakan pengikatan data dua hala dan mempunyai API pengisytiharan Adalah mustahil untuk $watch
di sini memantau elemen DOM 下拉框
. Perkataan yang sesuai boleh ditulis sebagai "ungkapan yang dipantau oleh $watch yang menunjuk kepada nilai kotak lungsur yang dipilih" yang lebih tepat (rakan yang mahir dalam bahasa Cina boleh mengoptimumkan lagi).
Apabila bertanya, kita cenderung terlalu menumpukan pada jawapan yang ingin kita ketahui dan mengabaikan cara ekspresinya huraian adalah kabur, menjadikannya mustahil untuk dijawab. Sebenarnya, saya masih boleh memahami huraian soalan itu, tetapi saya hanya ingin mengatakan beberapa perkataan lagi kerana perasaan saya.
Berbalik kepada subjek, memandangkan anda tidak mahu berurusan dengan pemulaan data $watch
, anda boleh menilainya seperti ini
$scope.$watch('表达式', function(newVal, oldVal){
//当之前值和当前值相同,或者之前值为null或undefined时
if(newVal === oldVal || oldVal == null){
//不执行任何操作
return;
}
//你的正常代码,写这里
});
PHPz2017-05-15 17:06:22
http://docs.ngnice.com/api/ng/type/$rootScope.Scope
scope.$watch('name', function(newValue, oldValue) {
if(newValue == oldValue) return;
scope.counter = scope.counter + 1;
});
習慣沉默2017-05-15 17:06:22
Menggunakan ngChange boleh mengelakkan panggilan pemula
Nota:
Perlu digunakan bersama dengan ngModel
Menukar nilai ngModel menggunakan program tidak akan mencetuskan ngChange
Nilai ungkapan yang diberikan apabila pengguna menukar input Ungkapan tersebut dinilai serta-merta, tidak seperti peristiwa onchange JavaScript yang hanya mencetuskan pada penghujung perubahan (biasanya, apabila pengguna meninggalkan elemen borang atau menekan butang. kunci pulangkan).
ngTukar Dokumentasi