構築されたウィジェットはすべてdijit.registryに配置され、アンロード時に消えます。
複数回構築されるウィジェットがある場合、たとえば、ContentPane ajaxローディングレイアウトを実行している場合は、コンテンツペインをアンロードする前に作成されたウィジェットを破棄する必要があります。つまり、コンテンツペインのDOMの下に配置されたウィジェットです。たとえば、サイドバーメニューがある場合は、毎回破棄して再作成しないでください:)
ContentPaneの拡張機能を使用していて、そのコンテンツとしてdojoマークアップが設定されている場合、パーサーがウィジェットの登録とアンロードを自動的に処理します。
だから答える; ただし、ウィジェットの「実装」であるDOMNodeを破棄したり、ウィジェットの内部の子を削除したりしないでください。代わりにdijit.byId('widgetId')
、レジストリからウィジェットを引き出すために呼び出します-そしてwidget.destroy();
それがドジョックスかダイアログか何か他のものなら、それはすべて同じです。それらは拡張されdijit._Widget
、同じベースAPIを持っています-少なくとも、dojoxモジュールの90%がそうしています。