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 № 1W 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.