J'ai une page qui lorsqu'un utilisateur clique sur un lien pour certains outils de reporting, il leur demande d'abord d'entrer quelques paramètres de rapport. Je reçois la boîte de dialogue des paramètres sous la forme AJAX, en fonction de l'identifiant du lien. Chaque boîte de dialogue a des commandes de dojo, donc je dois les analyser lorsque la boîte de dialogue apparaît, car elle ne fait pas partie de la page.dojo.parser.parse ne fonctionne que la première fois il est appelé
La première boîte de dialogue à l'appel fonctionne correctement, mais les appels suivants aux boîtes de dialogue ne parviennent pas à analyser les commandes dojo.
Exemple:
showParametersDialog : function(doc) {
var content = doc.firstChild.firstChild.data;
var container = document.createElement('div');
container.id = 'dialog';
container.innerHTML = content;
container.style.background = 'transparent';
container.style.position = 'absolute';
container.style.top = (document.body.clientHeight/2) - 124 + "px";
container.style.left = (document.body.clientWidth/2) - 133 + "px";
container.style.display = 'block';
document.body.appendChild(container);
// set up date fields
var date_from = dojo.byId('date_from');
var date_to = dojo.byId('date_to');
try {
date_from.value = dojo.date.locale.format(new Date(), {selector: 'date'});
date_to.value = dojo.date.locale.format(new Date(), {selector: 'date'});
} catch(e) {
var now = new Date();
date_from.value = String(now.getMonth() + "/" + now.getDate() + "/" + now.getFullYear());
date_to.value = String(now.getMonth() + "/" + now.getDate() + "/" + now.getFullYear());
}
dojo.parser.parse();
}
Tous les dialogues ont les champs de date commune. Donc quand j'appelle cette boîte de dialogue la première fois, et que dojo.parser.parse() est appelé, il analyse les contrôles sur le dialogue, mais seulement la première fois ... après, pas de dojo.
Des pensées?
Merci, Paul.
Ok, j'ai essayé d'utiliser: liste var = dojo.query ('[widgetId]', 'dialogue'); list.forEach ( fonction \t (w) { \t \t w.destroyRecursive(); }); ... pour détruire les widgets lorsque la boîte de dialogue est fermée et que l'erreur "L'objet ne supporte pas cette méthode" !!! Quelle? Bien sûr, cela supporte cette méthode, c'est dans les docs! Je commence à penser que l'utilisation de Dojo était un mauvais choix car cela me coûte maintenant du temps de développement. J'ai essayé l'exemple du site Web et ils ne fonctionnent tout simplement pas. J'utilise 1.3.2 Aide? Merci! – CrazyMerlin
Au lieu de détruire récursif, vous pouvez aussi essayer d'utiliser un appel à dojo.query() pour récupérer n'importe quoi avec un "_widgetId" dans votre boîte de dialogue, puis détruire chacun individuellement. – Glenn
Merci, mais j'ai essayé cela avec ce code: dojo.query ('[widgetId]', 'dialog'). ForEach (fonction (w) {w.destroy();}); Chaque fois que j'utilise détruire ou détruireRecursive je reçois la même chose "Méthode non supportée". Et parce que la liste ne contenait que des widgets réels, cela n'a aucun sens. Chacun devrait avoir une destruction, mais le système dit non.Cela n'a tout simplement pas de sens. – CrazyMerlin