J'ai ce bit de code. Il est utilisé pour mettre à jour le formulaire après la modification d'un élément select. onChange un appel "ajax" est fait et ce bit de code s'occupe de la réponse.dojo.parser.parse ne retourne pas toujours
La première fois que tout fonctionne comme prévu. Cependant, le dojo.parser.parse ne parvient pas à retourner environ 50% du temps.
Au début, il ressemblait à ceci:
var targetNode = dojo.byId(node);
targetNode.innerHTML = data;
dojo.parser.parse(targetNode);
Alors je lis quelque chose sur les objets existants. Donc, je pensais que peut-être les détruire aiderait:
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);
Cela n'a pas aidé. Que fait le h3ll? Parfois, il analyse certains des éléments. Est-ce un problème connu avec le dojo.parser?
Donc je suppose que je devrais garder la liste des dijits analysés à détruire plus tard dans un tableau global? –
Pas nécessairement dans la portée globale, choisissez la portée qui vous convient. Vous pouvez également utiliser 'dijit.findWidgets' pour trouver les dijits dans un noeud DOM et les détruire. Par exemple, 'var dijits = dijit.findWidgets (targetNode); // détruis les dijits –
L'homme, c'est fantastique! Merci de votre aide! Je ne sais rien du dojo. Je pensais que je pouvais juste faire un node.empty ou peut-être node.destroyRecursive. Mais ça ne marche pas comme je m'y attendais. Est-ce parce que les noeuds sont enregistrés en mémoire sous la forme d'un objet dojo dont le dojo lui-même est conscient? Ainsi, node.empty, se débarrasse du noeud dans le DOM, mais pas l'objet dojo en mémoire? –