Saya memiliki di halaman .html saya daftar dropdown,
Dropdown:
<select ng-model="blisterPackTemplateSelected" data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
<option value="">Select Account</option>
</select>
Saya ingin menjalankan tindakan saat pengguna memilih nilai. Jadi di pengontrol saya, saya melakukan:
Pengontrol:
$scope.$watch('blisterPackTemplateSelected', function() {
alert('changed');
console.log($scope.blisterPackTemplateSelected);
});
Tetapi mengubah nilai di daftar tarik-turun tidak memicu kode: $scope.$watch('blisterPackTemplateSelected', function()
Akibatnya saya mencoba metode lain dengan: ng_change = 'changedValue()'
pada tag pilih
dan
Fungsi:
$scope.changedValue = function() {
console.log($scope.blisterPackTemplateSelected);
}
Tapi blisterPackTemplateSelected
disimpan ke dalam lingkup anak. Saya membaca bahwa orang tua tidak bisa mendapatkan akses ke lingkup anak.
Apa cara yang benar / terbaik untuk mengeksekusi sesuatu ketika nilai yang dipilih dalam daftar dropdown berubah? Jika itu metode 1, apa yang saya lakukan salah dengan kode saya?
sumber
Saya mungkin terlambat untuk ini tetapi saya memiliki masalah yang agak sama.
Saya perlu meneruskan id dan nama ke dalam model saya tetapi semua solusi ortodoks meminta saya membuat kode pada pengontrol untuk menangani perubahan.
Saya macgyvered jalan keluarnya dengan menggunakan filter.
"Trik" ada di sini:
Saya menggunakan filter bawaan untuk mengambil nama yang benar untuk id
Ini plunkr dengan demo yang berfungsi.
sumber
Tolong, gunakan untuk itu
ngChange
direktif. Sebagai contoh:Dan berikan nilai model baru Anda di pengontrol sebagai parameter:
sumber
Praktik terbaiknya adalah membuat objek (selalu gunakan a. In ng-model)
Di pengontrol Anda:
dan di template Anda:
Sekarang Anda bisa menonton
atau Anda bisa menggunakan direktif ng-change seperti ini:
Video egghead.io "The Dot" memiliki gambaran yang sangat bagus, seperti halnya pertanyaan stack overflow yang sangat populer ini: Apa nuansa dari scope prototypal / prototypical inheritance di AngularJS?
sumber
Anda bisa meneruskan nilai ng-model melalui fungsi ng-change sebagai parameter:
Agak sulit untuk mengetahui skenario Anda tanpa melihatnya, tetapi ini akan berhasil.
sumber
Anda bisa melakukan sesuatu seperti ini
daripada menambahkan opsi Anda harus menggunakan data-ng-options. Saya telah menggunakan opsi Tambah untuk tujuan pengujian
sumber
Saya terlambat di sini tetapi saya menyelesaikan masalah yang sama dengan cara yang sederhana dan mudah ini.
dan fungsi ng-change adalah sebagai berikut;
sumber
Anda akan mendapatkan nilai dan teks opsi yang dipilih dari daftar / larik dengan menggunakan filter.
editobj.FlagName = (EmployeeStatus | filter: {Value: editobj.Flag}) [0] .KeyName
sumber
Saya memiliki masalah yang sama dan menemukan solusi unik. Ini bukan praktik terbaik, tetapi mungkin terbukti sederhana / bermanfaat bagi seseorang. Cukup gunakan jquery pada id atau kelas atau tag pilih Anda dan Anda kemudian memiliki akses ke teks dan nilai dalam fungsi perubahan. Dalam kasus saya, saya mengirimkan nilai opsi melalui layar / ejs:
Kemudian di pengontrol Angular saya fungsi ng-change saya terlihat seperti ini:
sumber
Saya telah mencoba beberapa solusi, tetapi berikut ini cuplikan produksi dasar. Harap perhatikan keluaran konsol selama jaminan kualitas cuplikan ini.
Mark Up:
Kode:
Penjelasan: poin penting di sini adalah pemeriksaan null dari nilai yang diubah, yaitu jika nilainya 'tidak ditentukan' atau 'nol', kita harus menangani situasi ini.
sumber