Joh*_*nes 27 dojo toolkit widget
我是Dojo Toolkit的新手.我收到了错误
Tried to register widget with id=myButton but that id is already registered
Run Code Online (Sandbox Code Playgroud)
每当我尝试加载dojo内容两次(意味着我通过jQuery.Load将HTML内容加载到容器div中).有没有办法在dojo中取消注册已注册的小部件?我已经看过一些例子,但我并没有真正让它们发挥作用.
我的按钮:
<button dojoType="dijit.form.Button" id="myButton">button</button>
Run Code Online (Sandbox Code Playgroud)
Jez*_*Jez 37
如果你正在寻找注销特定窗口小部件,你可以使用他们destroy() 或destroyRecursive()方法.第二个破坏你正在销毁的小部件内的任何小部件(即在窗体小部件上调用destroyRecursive也会破坏所有的表单组件).
在你的情况下,听起来你最好的选择是在此之前做到这一点jQuery.load-
var widgets = dijit.findWidgets(<containerDiv>);
dojo.forEach(widgets, function(w) {
w.destroyRecursive(true);
});
Run Code Online (Sandbox Code Playgroud)
上面的代码将取消注册所有小部件<containerDiv>,并保留其关联的DOM节点.要销毁DOM节点,false请destroyRecursive转而使用.
参考:
http://dojotoolkit.org/api/1.3/dijit/_Widget/destroyRecursive
Joh*_*nes 10
基于http://bugs.dojotoolkit.org/ticket/5438,我发现了一种破坏dojo-widget的充分方法:
dijit.registry.forEach(function(w){
w.destroy();
});
Run Code Online (Sandbox Code Playgroud)