0

新しい dijit/dojox ウィジェットを作成するときは、次のようにしてボタンを作成します。

new Button({...}, "domId");

そして、新しいボタンをタブ パネルに追加し、ある時点でユーザーがそのタブを閉じたとします。ボタンを破壊するのは私の責任ですか?

dojox のウィジェットはどうですか?

ダイアログのようなコンポーネントはどうですか? (jquery UI では、ウィジェットとそれを作成するために使用された dom を破棄する必要があります)。

助けてくれてありがとう。

4

1 に答える 1

2

構築されたウィジェットはすべてdijit.registryに配置され、アンロード時に消えます。

複数回構築されるウィジェットがある場合、たとえば、ContentPane ajaxローディングレイアウトを実行している場合は、コンテンツペインをアンロードする前に作成されたウィジェットを破棄する必要があります。つまり、コンテンツペインのDOMの下に配置されたウィジェットです。たとえば、サイドバーメニューがある場合は、毎回破棄して再作成しないでください:)

ContentPaneの拡張機能を使用していて、そのコンテンツとしてdojoマークアップが設定されている場合、パーサーがウィジェットの登録とアンロードを自動的に処理します。

だから答える; ただし、ウィジェットの「実装」であるDOMNodeを破棄したり、ウィジェットの内部の子を削除したりしないでください。代わりにdijit.byId('widgetId')、レジストリからウィジェットを引き出すために呼び出します-そしてwidget.destroy();

それがドジョックスかダイアログか何か他のものなら、それはすべて同じです。それらは拡張されdijit._Widget、同じベースAPIを持っています-少なくとも、dojoxモジュールの90%がそうしています。

于 2012-08-19T13:06:32.813 に答える