Из документов додзе о dijit.registry
, Я вижу forEach
метод принимает последний параметр thisObject
. Но это не делает пути, каков тот объект. Действительно ли это - dijit виджет или объект додзе?
Я хочу уничтожить все виджеты в элементе (который будет заменен Ajax), таким образом, они смогут быть проанализированы снова без конфликтующего идентификатора.
dijit.registry.forEach(function(w) {
w.destroyRecursive();
}, dojo.byId("ajaxElement"));
Но это уничтожает ВСЕ виджеты на странице...
Объект thisObject
является объектом области видимости для вызова функции, переданной в качестве первого параметра forEach
.
Несколько решений, которые можно использовать в этом случае:
1) Используйте dijit.findWidgets
, чтобы найти все диджиты в узле DOM и уничтожить их по одному.
dijit.findWidgets возвращает массив виджетов, который принимает domnode в качестве параметра
2) dojo.parser.parse
возвращает массив всех созданных диджитов, сохраните этот массив и уничтожьте диджиты, прежде чем снова вызвать dijit.parser.parse
.
3) Используйте dijit.registry.filter
, чтобы отфильтровать диджиты, которые вы хотите сохранить.