我有以下标记:
<button dojoType="dijit.form.DropDownButton" dojoAttachPoint="labels" label="Labels">
<div dojoType="dijit.Menu" dojoAttachPoint="labelsMenu"></div>
</button>
我正在以编程方式添加MenuItems,它第一次正常工作。但是当我想要刷新时,我收到一个错误:Tried to register widget with id==16 but that id is already registered
。我已经尝试了以下代码来清除但它不起作用:
var labels = dijit.findWidgets(this.labels);
dojo.forEach(labels, function (l) {
l.destroyRecursive();
});
dojo.empty(dojo.byId(this.labels));
我也尝试使用labelMenu来清空它,但没有运气。有没有其他方法可以在重装数据或丢失某些东西时摆脱所有孩子?
答案 0 :(得分:0)
我已经解决了,这就是我所做的:
var menuChildren = dijit.byId(this.labelsMenu).getChildren();
if (menuChildren.length > 0){
dojo.forEach(menuChildren, function(mc){
mc.destroyRecursive();
});
}
答案 1 :(得分:0)
在您的代码中,您可以在标签上调用dojo.empty。 dojo.empty()清空DOM中的元素,但保留原始元素。所以尝试在dijit菜单上调用dojo.empty。
dojo.empty(dojo.byId("labelsMenu"));
作为参考,在完全无基础的应用程序中,使用dom-construct模块。
require(["dojo/dom-construct"], function(domConstruct){
// Empty node's children byId:
domConstruct.empty("someId");
});