在创建一个小部件时,我检查是否存在如下所示的div,然后销毁内容并再次创建.
if (dijit.byId("TPContainer")) {
dijit.byId("TPContainer").destroyRecursive(true);
dojo.place('<div id="TPContainer"></div>',dojo.byId("TitleContainer"));
}
Run Code Online (Sandbox Code Playgroud)
但在加载HTML模板之前
var container = dijit.byId("mainContainer");
container.destroyDescendants();
container.set("href", TemplateLink);
Run Code Online (Sandbox Code Playgroud)
我刚从别处拿了代码.但不清楚这个概念.我不知道何时使用Dojo可用的破坏功能.有人可以解释何时使用哪种破坏功能?他们有什么区别?
Sho*_*hoe 14
看一下Dojo api(目前是1.10),这些方法定义在_WidgetBase(尽管destroy来自dijit/Destroyable)并由所有小部件继承.由于这些都埋没在api文档中,而不是写在_Widgetbase教程页面中,我将在此列出它们.
在内部,破坏Blah方法需要destroy自己(如果适用)和他们的孩子,因此这些功能就像简单的帮助方法,以便更容易破坏事物.
参数: preserveDom
类型:布尔值
描述:如果为true,则此方法将单独保留原始DOM结构.注意:这不适用于_TemplatedMixin小部件
摘要:
销毁这个小部件,但不是它的后代.后代表示this.containerNode中的小部件.还会破坏通过this.own()注册的所有资源(包括小部件).
此方法还将销毁内部窗口小部件,例如从模板创建的窗口小部件,假设这些窗口小部件存在于this.domNode内部但在this.containerNode之外.
对于2.0,计划此方法也会破坏后代小部件,因此应用程序不应依赖于当前破坏小部件而不破坏其后代的能力.通常,他们应该对带子项的小部件使用destroyRecursive().
参数: preserveDom
类型:布尔值
说明:(可选)如果为true,preserveDom属性传递给所有后代widget的.destroy()方法.不适用于_Templated小部件.
摘要:
递归地销毁这个小部件及其后代的子节点.
参数: preserveDom
类型:布尔值
说明:(可选)如果为真,该方法将独自后代的Widgets离开了原来的DOM结构.注意:这不适用于dijit._TemplatedMixin小部件.
销毁此小部件及其后代
这是一个通用的"析构函数"函数,所有小部件用户都应调用它来使用小部件干净地丢弃.一旦窗口小部件被销毁,它就会从管理器对象中删除.
在您的第一个示例中,destroyRecursive将调用窗口小部件上的destroy(但由于true参数而不是dom元素).与你的第二个例子形成对比,在第二个例子中,仅在调用它的小部件的后代上调用destroy.由于没有preserveDom指定,它将销毁dom元素以及小部件注册表.
| 归档时间: |
|
| 查看次数: |
10402 次 |
| 最近记录: |