首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dojo.empty() / domConstruct.empty()到底做了什么?

dojo.empty() / domConstruct.empty()到底做了什么?
EN

Stack Overflow用户
提问于 2016-02-16 09:11:01
回答 1查看 828关注 0票数 0

假设我在id1中用一些id2注册了一些小部件(比如id2、someNode )。现在,如果我这样做了,domConstruct.empty(someNode),这将通过执行someNode.innerHTML= ""someNode中删除小部件。但是这些小部件还在内存中吗?

我想说的是,在domConstruct.empty(someNode)之后,我能在id1或id2中注册一个小部件吗?

如果没有,那我又如何达到同样的目标呢?我不想检查小部件在创建过程中是否具有相同的id,如果它存在,则销毁它。

P.S:我假设dojo.empty()domConstruct.empty()的工作方式是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 13:25:58

dojo/dom-construct的API对Dijit小部件一无所知,所以当您运行domConstruct.empty(node)domConstruct.destroy(node)时,它对查找和销毁小部件没有任何作用。(我有一个与explained how to do that相关的问题。)

创建Dijit小部件时,它们将被填充到由dijit/registry模块维护的散列中,这使得以后可以通过ID (或节点)访问它们。dijit/registry.findWidgets也被dijit/_WidgetBase#getChildren (容器和布局小部件依次使用)用于根据DOM树检索子小部件。

由于dojo/dom-construct对Dijit一无所知,它只是销毁给定节点下的所有DOM节点,而不更新Dijit的注册表。因此,最终会出现一个不一致的状态,Dijit认为这些小部件仍然存在,但是它们的DOM实际上已经被销毁了。正如在另一个问题中回答的那样,您应该首先使用findWidgets正确地销毁小部件,或者考虑使用布局小部件或ContentPane来为您管理子部件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35428202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档