当我创建一个新的dijit / dojox小部件时,让我们说一个Button,执行:
new Button({...}, "domId");
假设我将新按钮添加到选项卡面板,用户关闭该选项卡。销毁按钮是我的责任吗?
dojox的小部件怎么样?
对话框等组件怎么样? (在jquery UI中,你必须销毁小部件和用于创建它的dom。)
感谢您的帮助。
答案 0 :(得分:2)
构建的任何小部件都将放在dijit.registry中,并在卸载时消失。
如果你有一个构造多次的窗口小部件,比如说你正在做一个ContentPane ajax加载布局 - 那么你应该销毁在卸载contentpane之前创建的所有窗口小部件。也就是说,已放置在contentpane的DOM下的小部件。例如,如果您有侧边栏菜单,请不要每次都销毁并重新创建它:)
如果您使用ContentPane的任何扩展并且它将dojo标记设置为其内容 - 解析器负责自动注册和卸载窗口小部件。
所以回答;然而,你不应该销毁一个DOMNode,它是一个小部件的“实现”,也不会删除任何一个内部子代。而是调用dijit.byId('widgetId')
从注册表中提取窗口小部件 - 然后调用widget.destroy();
如果它是一个dojox或对话或其他东西,它都是一样的。它们被dijit._Widget
扩展并具有相同的基本api - 至少90%的dojox模块都是这样。