从dijit.registry
上的dojo documents,我看到forEach
方法接受最后一个参数thisObject
。但它不是那个对象的方式。它是一个dijit小部件还是一个dojo对象?
我想销毁一个元素中的所有小部件(将被AJAX取代),这样它们就可以再次被解析,而不会出现ID的冲突。
dijit.registry.forEach(function(w) {
w.destroyRecursive();
}, dojo.byId("ajaxElement"));
但是这会破坏页面上的所有小部件...
答案 0 :(得分:3)
thisObject
是范围对象,用于调用作为forEach
的第一个参数传入的函数。
在这种情况下您可以使用几种解决方案:
1)使用dijit.findWidgets
查找DOM节点中的所有dijit并逐个销毁它们。
dijit.findWidgets返回以domnode为参数的小部件数组
2)dojo.parser.parse
返回它创建的所有dijits的数组,存储该数组并在再次调用dijit.parser.parse
之前销毁dijits。
3)使用dijit.registry.filter
过滤掉您想要保留的dijits。