У меня есть этот бит кода. Он используется для обновления формы после изменения элемента select. onChange выполняется вызов «ajax», и этот бит кода отвечает за ответ.dojo.parser.parse не всегда возвращает
В первый раз все работает так, как ожидалось. Однако dojo.parser.parse не может вернуться примерно в 50% случаев.
Сначала это выглядело так:
var targetNode = dojo.byId(node);
targetNode.innerHTML = data;
dojo.parser.parse(targetNode);
Тогда я что-то об объектах существующих читать. Поэтому я подумал, что, возможно, их уничтожение поможет:
if(dojo.byId(node)) dojo.destroy(node);
dojo.create('div', { id: node }, afternode, 'after');
var targetNode = dojo.byId(node);
targetNode.innerHTML = data;
dojo.parser.parse(targetNode);
Это не помогло. Что происходит? Иногда он разбирает некоторые элементы. Это известная проблема с dojo.parser?
Так что, я думаю, мне нужно будет сохранить список разобранных диджитов для уничтожения позже в глобальном массиве? –
Не обязательно в глобальном масштабе, выберите область, подходящую для вас. Вы также можете использовать 'dijit.findWidgets', чтобы найти диджиты в узле DOM и уничтожить их. Например, 'var dijits = dijit.findWidgets (targetNode); // уничтожить диджиты' –
Человек, это фантастика! Спасибо за вашу помощь! Я ничего не знаю о додзе. Я думал, что могу просто сделать node.empty или, может быть, node.destroyRecursive. Но это не работает, как я ожидал. Это потому, что узлы зарегистрированы в памяти как объект додзё, который сам додзё знает? Итак, node.empty, избавляется от узла в DOM, но не додзе-объект в памяти? –