/ / Dojo Toolkit 1.8.3 Mobile dojo / on Handler Widget de cambio de evento - javascript, html, events, mobile, dojo

Dojo Toolkit 1.8.3 Mobile Dojo / on Handler Widget de cambio de evento - javascript, html, events, mobile, dojo

Estoy tratando de crear un controlador de eventos básico para unDojox.mobile.Switch widget utilizando el evento onStateChanged. Estoy utilizando el módulo de controlador de eventos dojo / on con respecto a la nueva arquitectura AMD y me cuesta mucho conseguir que escuche el evento de mi conmutador.

Aquí está el HTML para el widget de cambio con id = mobileView

    <li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="icon:"../../app/images/i-      icon-1.png"">
Mobile Version
<div id="mobileView" class="mblItemSwitch" data-dojo-type="dojox.mobile.Switch"></div>
</li>

Aquí está el código JS. El segundo requisito se supone que debe manejar el evento de conmutación.

    require(["dojox/mobile/parser", "dojox/mobile", "dojox/mobile/deviceTheme","dojox/mobile/compat", "dojo/domReady!"],
function(parser) {
parser.parse();
});

require(["dojo/on", "dijit/dijit"],
function(on){
on(dijit.byId("mobileView"),
"onStateChanged",
function(newState){
alert(newState);
});
});
</script>

Puedo ver que está ligado al widget.usando dijit.byId, escuchando el evento en StateChanged y llamando a la función anterior una vez que el estado cambia. Estoy pensando que tiene algo que ver con tener los módulos correctos incluidos en el requerimiento, pero no estoy realmente seguro. He pasado horas en esto y he probado muchos métodos diferentes, incluida la antigua forma de hacer dojo.connect.

Cualquier ayuda / consejos serían muy apreciados!

Referencia: dojo / on Dojo Toolkit dojo / on

Respuestas

1 para la respuesta № 1

En versiones anteriores del dojo, dojo.connect() manejó tanto los eventos DOM (clic, foco, etc.) como las llamadas a funciones en un widget.

Sin embargo, el más nuevo dojo/on módulo maneja eventos DOM, y la dojo/aspect El módulo maneja llamadas a funciones. Switch.onStateChanged () es una función, no un evento DOM, por lo que desea algo como esto:

require(["dojo/aspect", "dijit/registry"], function(aspect, registry) {
aspect.after(registry.byId("mobileView"), "onStateChanged",
function(newState){
alert(newState);
}
);
});

Ver http://dojotoolkit.org/reference-guide/1.8/dojo/connect.html para más información.