我是否必须销毁我创建的dijit和dojox小部件?

时间:2012-08-18 22:25:40

标签: dojo

当我创建一个新的dijit / dojox小部件时,让我们说一个Button,执行:

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

假设我将新按钮添加到选项卡面板,用户关闭该选项卡。销毁按钮是我的责任吗?

dojox的小部件怎么样?

对话框等组件怎么样? (在jquery UI中,你必须销毁小部件和用于创建它的dom。)

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

构建的任何小部件都将放在dijit.registry中,并在卸载时消失。

如果你有一个构造多次的窗口小部件,比如说你正在做一个ContentPane ajax加载布局 - 那么你应该销毁在卸载contentpane之前创建的所有窗口小部件。也就是说,已放置在contentpane的DOM下的小部件。例如,如果您有侧边栏菜单,请不要每次都销毁并重新创建它:)

如果您使用ContentPane的任何扩展并且它将dojo标记设置为其内容 - 解析器负责自动注册和卸载窗口小部件。

所以回答;然而,你不应该销毁一个DOMNode,它是一个小部件的“实现”,也不会删除任何一个内部子代。而是调用dijit.byId('widgetId')从注册表中提取窗口小部件 - 然后调用widget.destroy();

如果它是一个dojox或对话或其他东西,它都是一样的。它们被dijit._Widget扩展并具有相同的基本api - 至少90%的dojox模块都是这样。