gpt4 book ai didi

javascript - 在Dijit中销毁小部件

转载 作者:行者123 更新时间:2023-12-03 16:40:40 24 4
gpt4 key购买 nike

销毁 Dojo / Dijit TabContainer内部的小部件的正确方法是什么?

对于每个选项卡,我正在加载新的BorderContainer,该代码基本上包括一个包含所有小控件的控件。但是现在我试图使其与选项卡控件一起使用,以便它在加载新页面之前破坏上一页,因此我陷入了困境。现在,我使用一个全局变量来存储 Activity 窗口小部件名称,当用户单击一个新选项卡时,它将从全局变量中获取 Activity 窗口小部件的ID并销毁它,然后继续加载新的 Activity 窗口小部件。这行得通,但是一旦我破坏了小部件一次,就无法使其再次出现。我收到此错误:

Uncaught Error: Tried to register widget with id==widget_foo_container but that id is already registered".



我对所有小部件都使用 widget_XXX_container id,因此 XXX被小部件的id取代。

我目前正在使用d ijit.byId('widget_foo_container').destroy(),但似乎无法完成工作。我也尝试过 destroyDecendant()destroyRecursive(),但它们也不会产生想要的效果。看来我可能会丢失一块实际上完成了销毁小部件的工作,而不仅仅是从DOM中删除了它。

最佳答案

看看dijit.registry,看看您的小部件是否仍在注册...

范例:

<div id="wrapper">
<div id="btn1" data-dojo-type="dijit.form.Button">Button1</div>
<div id="btn2" data-dojo-type="dijit.form.Button">Destroy button 1
<script type="dojo/method" data-dojo-event="onClick">
dijit.byId("btn1") && dijit.byId("btn1").destroyRecursive();
console.debug(dijit.registry._hash);
</script>
</div>
<div id="btn3" data-dojo-type="dijit.form.Button">Recreate button 1
<script type="dojo/method" data-dojo-event="onClick">
dojo.place(new dijit.form.Button({ label: "Button1", id:"btn1"}).domNode, "wrapper", "first");
console.debug(dijit.registry._hash);
</script>
</div>
</div>

关于javascript - 在Dijit中销毁小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com