2013-04-09 5 views
2

Je veux mettre à jour de dojo 1.7 à 1.8.3 donc je dois remplacer la commande dojo.connect.aspect dojo non défini, ne comprends pas pourquoi

Commutateur:

< div id="universalPushSwitch" data-dojo-type="dojox.mobile.Switch" style="float:right" class="mblSwRoundShape1"></div> 

Maintenant, j'ai:

dojo.require("dijit/registry"); 
dojo.require("dojo/ready"); 
dojo.require("dojox/mobile/ListItem"); 
dojo.require("dojo/aspect"); 

dojo.ready(function(){ 
    dojo.aspect.after(dijit.registry.byId("universalPushSwitch"), "onStateChanged", 
     function(newState){ 
     alert(newState); 
    } 
)}); 

Firebug dit: "aspect n'est pas défini"

PS: Je sais que je ne pas utiliser le nouveau chargeur AMD . C'est un vieux projet et je suis aussi nouveau dans tous les dojo. Un simple traduire de dojo.require("x");dojo.require("y"); à require(["x","y"], function (x,y){...} ne fonctionne pas pour moi, donc il y a toujours le style ancien.

+0

i changé dojo.byId à dijit.registry.byId de telle sorte que le widget est retourné et non l'objet DOM. Mais bien sûr, cela n'a rien changé, juste pour votre information. – user2219190

Répondre

3

Essayez d'utiliser:

dojo.aspect.after(...); 

au lieu de

aspect.after(...); 

Et ne vous arrêtez pas à la prochaine fonction! :-)

Si cela ne fonctionne pas à la fois, essayez aspect de chargement de la manière globale (avec un point, et non une barre oblique):

dojo.require("dojo.aspect"); 

Il pourrait être également possible, que l'ancien dojo est pas compatible avec "/" et qu'il ne fonctionne qu'avec des points!

Source:

http://livedocs.dojotoolkit.org/dojo/require

EDIT:

est ici un violon de travail basé sur votre violon:

http://jsfiddle.net/9Xdv2/

Le principal problème avec votre code est que vous n'avez pas analysé le code HTML. l'analyseur dojo convertit un code html spécifique en "objets javascript dojo"! Vous utilisez beaucoup ce type de html! Vous auriez dû faire un:

dojox.mobile.parser.parse(); 

Tout est dans le jsfiddle!

Lucian

+0

je l'ai changé pour dojo.aspect.after et a également changé le require de/à. mais le problème est toujours là. En utilisant le dojo.la commande ready a corrigé le problème d'aspect mais maintenant l'alerte déclenche un "undefined" au lieu de "on" ou "off". Vraiment frustrant pour un débutant :(Merci pour votre aide :) – user2219190

+0

pourriez-vous mettre à jour votre question avec le code OU MEILLEUR: allez à jsfiddle.com et essayez d'obtenir l'essence de votre code en cours d'exécution et postez le lien dans votre question initiale. –

+0

J'ai mis à jour le code ci-dessus. J'ai également essayé jsfiddle (ma première fois :)) mais dojo ne fonctionne pas pour moi là (http://jsfiddle.net/HK7at/1/) – user2219190

2

Depuis que vous utilisez et 1.8.3 dojo avez utilisé dojo 1.7, pourquoi utilisez-vous pas la syntaxe AMD à la place de la pré-1.7? Vous feriez quelque chose comme:

<div id="universalPushSwitch" data-dojo-type="dojox/mobile/Switch" style="float:right" class="mblSwRoundShape1"></div> 

Et dans votre js:

require(["dijit/registry", 
     "dojox/mobile/ListItem", 
     "dojo/aspect", 
     "dojo/parser", 
     "dojo/domReady!" 
     ], function(registry, ListItem, aspect, parser){ 

    parser.parse().then(function(instances){ 
     aspect.after(registry.byId("universalPushSwitch"), "onStateChanged", 
      function(newState){ 
       alert(newState); 
      }); 
    }); 
}); 
+0

vous conseille également de passer @ utilisateur –

+0

je ferai après tout fonctionne bien. Je l'ai déjà essayé comme ça (bien sûr mon code complet est beaucoup plus grand et donc les inclus) et ça n'a pas fonctionné donc je l'ai mis à la fin de ma liste de tâches :) Actuellement je dois résoudre un problème avec xhr, si vous êtes intéressé;) http://stackoverflow.com/questions/15904255/dojo-xhr-post-doesnt-work – user2219190

+1

Travail du violon avec ce type de syntaxe: http://jsfiddle.net/o6xu9b11/ – mbomb007

Questions connexes