/ / Dojo Toolkit 1.8.3 Mobile dojo / on Handler Event Switch Widget - javascript, html, events, mobile, dojo

Dojo Toolkit 1.8.3 Mobile dojo / on Handler Event Switch Widget - javascript, html, events, mobile, dojo

Próbuję utworzyć podstawowy program obsługi zdarzeń dlawidżet dojox.mobile.Switch używający zdarzenia onStateChanged. Korzystam z modułu obsługi zdarzeń dojo / on w odniesieniu do nowej architektury AMD i mam trudności z pobieraniem go w celu odsłuchania zdarzenia switch.

Oto kod HTML dla widżetu przełącznika o 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>

Oto kod kodu JS. Drugim warunkiem jest obsługa zdarzenia przełącznika.

    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>

Widzę, że wiąże się z widżetemużywanie dijit.byId, nasłuchiwanie zdarzenia onStateChanged i wywoływanie poprzedniej funkcji po zmianie stanu. Myślę, że ma to coś wspólnego z tym, że odpowiednie moduły są zawarte w wymaganiu, ale nie jestem do końca pewien. Spędziłem wiele godzin i próbowałem wielu różnych metod, w tym starego sposobu dojo.connect.

Każda pomoc / wskazówki będą bardzo mile widziane!

Odniesienie: dojo / on Dojo Toolkit dojo / on

Odpowiedzi:

1 dla odpowiedzi № 1

W starszych wersjach dojo, dojo.connect() obsługiwał zarówno zdarzenia DOM (kliknięcie, fokus, itp.), jak i wywołania funkcji na widżecie.

Jednak nowsze dojo/on moduł obsługuje zdarzenia DOM, a dojo/aspect moduł obsługuje wywołania funkcji. Switch.onStateChanged () jest funkcją, a nie zdarzeniem DOM, więc potrzebujesz czegoś takiego:

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

Widzieć http://dojotoolkit.org/reference-guide/1.8/dojo/connect.html po więcej informacji.