Tutup semua dialog modal di Dojo

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.


person Alex Marshall    schedule 04.12.2008    source sumber


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

person Community    schedule 09.12.2008
comment
OKE. Sayangnya, itu tidak membantu situasiku, tapi itu bukan salahmu. Terima kasih atas jawaban Anda kawan, ini sangat kami hargai. - person Alex Marshall; 11.12.2008

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(); 
});
person user49360    schedule 27.12.2008
comment
Ketika saya melihat ini, dikatakan 'filter' tidak terdefinisi. Apakah ada perubahan pada hal ini? - person streetlight; 11.07.2014

Tampaknya satu-satunya cara yang valid saat ini adalah melacak dialog Anda dan menutup semuanya bila diperlukan menggunakan hide().

person Eugene Lazutkin    schedule 05.12.2008

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.

person pierdeux    schedule 19.02.2009

dojo >= 1.10:

define(['dijit/registry'], ...

registery.toArray().filter(function(w){ 
    return w && w.declaredClass == "dijit.Dialog" 
}).forEach(function(w){ 
    w.hide(); 
});
person widecr0w    schedule 09.07.2015