2010-12-11 56 views
0

J'utilisais avec succès dojo.dnd.Source avec Dojo 1.4.3 chargé depuis mon serveur web. Cependant, comme c'est un hébergement partagé ou pour une autre raison, le chargement était horriblement lent. (même quelque chose comme 1min30 secondes occasionnellement)Dojo.dnd.source a cessé de fonctionner lors de la migration vers dojo 1.5 avec la source de google apis

Donc j'essaie maintenant de passer à DOJO 1.5 et googleapis comme source. Le résultat est un meilleur temps de chargement mais mon problème est que dojo.dnd n'est pas reconnu. voici le code que j'utilise pour le chargement dojo.dnd.Source

  dojo.addOnLoad(function() {     
      dojo.require("dijit.Dialog"); 
      dojo.require("dojo.parser"); 
      dojo.require("dijit.Editor"); 
      dojo.require("dojo.dnd.Source"); 

      widgetSrcNode = new dojo.dnd.Source("admin_widgetSrcNode", {accept:["unknown"]}); 

Le message d'erreur que je reçois est la suivante: dojo.dnd est définie http://mydomain.com/admin/somepage.php?wp=17 Ligne 171

- fin du message

Ligne 171: widgetSrcNode = new dojo.dnd.Source ("admin_widgetSrcNode", {accept: ["inconnu "]});

Je ne vois aucun changement dans la documentation pour dojo.dnd dans 1.5 vs 1.4 et j'ai essayé plusieurs options de djconfig mais pas de chance. Quoi d'autre puis-je essayer?

Répondre

0

Dès que vous avez inclus dojo.js dans votre page, vous avez tout de suite Dojo Base immédiatement disponible. Cela fonctionne pour n'importe quelle construction de Dojo. Mais lorsque vous utilisez une version CDN de Dojo (Google CDN dans votre cas), tous les appels dojo.require() deviennent asynchrones. L'émission dojo.require() ne signifie pas que ce qui était requis sera disponible sur la ligne suivante. Vous devriez l'attendre.

Heureusement, cette partie est facile. Essayez de modifier votre code comme ça:

// require our stuff outside of dojo.ready() 
dojo.require("dijit.Dialog"); 
dojo.require("dojo.parser"); 
dojo.require("dijit.Editor"); 
dojo.require("dojo.dnd.Source"); 

dojo.ready(function() { 
    // DOM is loaded and required files are downloaded 
    // let's create what we want 
    widgetSrcNode = new dojo.dnd.Source(...); 
}); 

Ou vous pouvez toujours faire attendre embarqué:

dojo.ready(function(){ 
    // DOM is ready 
    // require more stuff 
    dojo.require("dijit.Dialog"); 
    dojo.require("dojo.parser"); 
    dojo.require("dijit.Editor"); 
    dojo.require("dojo.dnd.Source"); 

    // now wait for it 
    dojo.ready(function() {     
    // let's create what we want 
    widgetSrcNode = new dojo.dnd.Source(...); 
    }); 
}); 

Personnellement, je préfère l'ancien — juste plus simple.

BTW, j'ai utilisé dojo.ready() au lieu de dojo.addOnLoad() uniquement en raison de mes préférences personnelles. Ils sont synonymes et peuvent être utilisés de manière interchangeable.

+0

A travaillé parfait! – Rythmic