0

当我创建一个新的 dijit/dojox 小部件时,可以说一个 Button,执行以下操作:

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

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

dojox 的小部件呢?

像对话框这样的组件呢?(在 jquery UI 中,您必须销毁小部件和用于创建它的 dom)。

谢谢你们的帮助。

4

1 回答 1

2

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

如果您有一个构建不止一次的小部件,假设您正在执行 ContentPane ajax 加载布局 - 那么您应该销毁在卸载内容窗格之前创建的任何小部件。也就是说,已放置在内容窗格的 DOM 下的小部件。例如,如果您有一个侧边栏菜单,请不要每次都销毁并重新创建它:)

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

所以回答;不是真的.. 但是,您不应该破坏作为小部件“实现”的 DOMNode,也不应该删除其中的任何内部子级。而是调用dijit.byId('widgetId')从注册表中提取小部件 - 然后widget.destroy();

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

于 2012-08-19T13:06:32.813 回答