Adakah yang tahu bagaimana saya bisa menutup semua dialog modal yang dibuat oleh Dojo? Rupanya dulu ada fungsi dojo.popup.closeAll, namun fungsi ini tidak lagi tersedia di Dojo API versi terbaru yang hadir dengan Spring JS.
Tutup semua dialog modal di Dojo
Jawaban (5)
Benar sekali.... alasan metode itu tidak ada lagi adalah karena mulai 1.0, siapa pun yang membuka popup bertanggung jawab untuk menutupnya. Ini adalah perubahan arsitektur yang saya buat.
Sebagian besar widget (seperti Menu) memantau ketika sudah diburamkan, lalu menutup popup turunannya. Jadi, Anda mungkin bisa mendapatkan efek yang Anda inginkan dengan mengalihkan fokus ke dokumen itu sendiri, atau ke node acak. Tentu saja itu solusinya.
Tagihan
Ini akan menemukan semua Dialog literal dalam satu halaman dan menyembunyikannya:
dijit.registry.filter(function(w){
return w && w.declaredClass == "dijit.Dialog"
}).forEach(function(w){
w.hide();
});
Tampaknya satu-satunya cara yang valid saat ini adalah melacak dialog Anda dan menutup semuanya bila diperlukan menggunakan hide().
Saya tidak tahu apakah ini ada gunanya, tapi saya cenderung hanya menggunakan satu dialog untuk setiap halaman (karena ini adalah modal). Semua konten dialog adalah xhrGot dari server, dan saya menghabiskan seluruh waktu dojo dalam siklus hidup halaman untuk mendaur ulang dialog yang sama berulang kali, hanya mengubah atributnya: href
dan title
-nya. Saya menemukan ini berfungsi serta memiliki beberapa dialog.
dojo >= 1.10:
define(['dijit/registry'], ...
registery.toArray().filter(function(w){
return w && w.declaredClass == "dijit.Dialog"
}).forEach(function(w){
w.hide();
});