aspecto dojo no definido, no entiendo por qué
undefined (2)
Como está utilizando dojo 1.8.3 y ha estado usando dojo 1.7, ¿por qué no usa la sintaxis de AMD en lugar de la pre-1.7? Harías algo como:
<div id="universalPushSwitch" data-dojo-type="dojox/mobile/Switch" style="float:right" class="mblSwRoundShape1"></div>
Y en tu 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);
});
});
});
Quiero actualizar desde dojo 1.7 a 1.8.3, así que tengo que reemplazar el comando dojo.connect.
cambiar:
< div id="universalPushSwitch" data-dojo-type="dojox.mobile.Switch" style="float:right" class="mblSwRoundShape1"></div>
Ahora tengo:
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 dice: "aspecto no está definido"
PD: Sé que no uso el nuevo cargador AMD. Este es un proyecto antiguo y también soy nuevo en todo lo del dojo. Un simple traducir de dojo.require("x");dojo.require("y");
require(["x","y"], function (x,y){...}
no funciona para mí, por lo que todavía existe el viejo estilo requerido.
Intenta usar:
dojo.aspect.after(...);
en lugar de
aspect.after(...);
¡Y no te detengas en la próxima función! :-)
Si eso no funciona a la vez, intente cargar el aspecto de manera global (con un punto, no con una barra inclinada):
dojo.require("dojo.aspect");
También podría ser posible, que el viejo dojo no es compatible con "/" y que solo funciona con puntos.
Fuente:
http://livedocs.dojotoolkit.org/dojo/require
EDITAR:
Aquí hay un violín de trabajo basado en tu violín:
El principal problema con su código era que no analizaba el html. ¡el analizador dojo convierte algunos html específicos en "objetos dojo javascript"! Usas ese tipo de html mucho! Deberías haber hecho un:
dojox.mobile.parser.parse();
¡Todo está en jsfiddle!
Lucian