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