3

Dojo によって作成されたすべてのモーダル ダイアログを閉じる方法を知っている人はいますか? 以前は dojo.popup.closeAll 関数があったようですが、これは Spring JS に付属する Dojo API の最新バージョンでは使用できなくなりました。

4

5 に答える 5

3

そうです....メソッドがなくなったのは、1.0から、ポップアップを開いた人がそれを閉じる責任があるからです。これは私が行ったアーキテクチャの変更です。

ほとんどのウィジェット (メニューなど) は、いつぼやけているかを監視し、子ポップアップを閉じます。したがって、フォーカスをドキュメント自体またはランダムなノードに切り替えることで、必要な効果が得られる可能性があります。もちろん、それは回避策です。

明細書

于 2008-12-09T09:47:26.897 に答える
3

これにより、ページ内のすべてのリテラル ダイアログが検索され、非表示になります。

dijit.registry.filter(function(w){ 
    return w && w.declaredClass == "dijit.Dialog" 
}).forEach(function(w){ 
    w.hide(); 
});
于 2008-12-27T13:17:31.593 に答える
1

現在の唯一の有効な方法は、ダイアログを追跡し、必要に応じてhide()を使用してすべてを閉じることです。

于 2008-12-05T16:00:53.697 に答える
0

道場 >= 1.10:

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

registery.toArray().filter(function(w){ 
    return w && w.declaredClass == "dijit.Dialog" 
}).forEach(function(w){ 
    w.hide(); 
});
于 2015-07-09T12:55:26.840 に答える
0

これが役に立つかどうかはわかりませんが、各ページに 1 つのダイアログのみを使用する傾向があります (モーダルであるため)。すべてのダイアログのコンテンツはサーバーからの xhrGot であり、ページのライフサイクル内で道場全体の時間を費やして、同じダイアログを何度も何度もリサイクルし、その属性を変更するだけです: itshrefと its title. これはいくつかのダイアログと同様に機能することがわかりました。

于 2009-02-19T07:00:55.870 に答える